ReferenceCountedObject could be over-engineered

ReferenceCountedObject could be a class templatized on the type of refCount to use, Atomic for the current behavior and int for the SingleThreadedReferenceCountedObject behavior.

Yes, could have done it that way too.

This would open the door to a variety of use-cases, like complex numbers instead of integers for the reference count although I’m not exactly sure when that would be helpful.