The attribute "assumed_value" from C_DEFINED_OBJECT cannot be sensibly implemented in the subclass C_COMPLEX_OBJECT. The only two subtypes that support "assumed_value" are C_DOMAIN_TYPE and C_PRIMITIVE_OBJECT. In the specs, the text says "Assumed values are definable at the leaf level only, which appears to be adequate for all purposes
described to date; accordingly, they appear in descendants of C_PRIMITIVE and also C_DOMAIN_TYPE."
Does this suggest that perhaps C_COMPLEX_OBJECT should really inherit directly from C_OBJECT instead of C_DEFINED_OBJECT or move the attribute "assumed_value" to yet another abstract class "C_LEAF_TYPE"?