Class::EHierarchy is intended for use as a base class for custom objects. The objects need one or more of the following features: orderly bottom-up destruction of objects, opaque objects, class-based access restrictions for properties and methods, primitive strict property type awareness, and alias-based object retrieval.