sub _free { my( $_son, $force )= @_; return if ! $force && $_son->isRefd(); my $dads= $_son->{dads}; for my $_dad ( @$dads ) { $_dad->_free( 1 ); # No need to check _isRefd() again. } $_son->{dads}= [ ]; }