sub walk_tree { my ($self, $branch_handler, $leaf_handler) = @_; if ($self->isLeaf()) { $leaf_handler->($self->{data}); } else { $branch_handler->{$self->{data}}; foreach my $child ($self->children()) { $child->walk_tree($branch_handler, $leaf_handler); } } }