sub traversal { my $self = shift; my @nodes; # self is FIRST @nodes = ( $self ); push @nodes, map { $_->traversal( ) } @{ $self->{children} }; return @nodes;