sub add_node {
my $self = shift;
my $node = shift;
return if is_duplicate( $node ); # do nothing for dups
# proceed to add node to the set of nodes for this tree
}
####
sub add_node {
my $self = shift;
my $node = shift;
return $self->{ N }{ $node->id } ||= $node;
}
####
$tree->add_node( Node->new( $some_random_object, $id ) );
####
sub { my $node = shift; return "$node" }
####
sub add_node {
my $self = shift;
my $node = shift;
my $id = get_id( $node );
return $self->{ N }{ $id } ||= $node;
}
sub get_id {
my $self = shift;
my $node = shift;
my $id_fxn = $self->id_fxn;
return $id_fxn( $node );
}
####
sub get_id {
my $self = shift;
my $node = shift; # $node->isa( 'Node' )
return
ref $node && $node->can( 'id' ) ? $node->id
: $self->id_fxn->( $node );
}