With the introduction of shared resources, we need to add support for arithmetic operations on Resources which perform such operations on shared resources. Shared resources need to be handled differently so as to account for incrementing/decrementing consumer counts maintained by each Resources object.
Resources total += shared_resource;
If shared_resource exists in total, this would imply that the consumer count is incremented. If shared_resource does not exist in total, this would imply we start tracking consumers for this shared resource initialized to 0 consumers.
Resources total -= shared_resource;
If shared_resource exists in total, this would imply that the consumer count is decremented. However, the shared_resource is removed from total if the consumer count is originally 0 in total).