package My::Child::Inner; use My::Inner qw< _wrap _unwrap _incRefs _decRefs >; sub _new { my( $class, $dad, @args )= @_; # Replace this with your real constructor! my $_son= { name => 'Boy', @args }; bless $_son, $class; $$dad->_adopt( $_son ) if $dad; return $_son; } sub GetName { my( $_son )= @_; return $_son->{name}; } sub GetDad { my( $_son )= @_; my $_dad= $_son->{dad}; return undef if ! $_dad; # We must wrap objects returned from public methods! return $_dad->_wrap(); } # For debugging: sub DESTROY { my( $_son )= @_; warn "DESTROYing son: $_son->{name}\n"; }