-/**
- * A shared object in an object with reference counting.
- * When a shared object is ceated, it has reference count == 1.
- * If the the reference count of a shared object reaches zero, the object self-destructs.
- * The default constrcutor and destructor of this object have been made protected on purpose.
- * This disables the creation and disposal of shared objects on the stack.
- */
-