Adding top-down optimisation.  This descends down matched nodes, then looks at all un-matched non-terminal children.  If they have the same label as in the corresponding sub-tree, they're matched.
Adding top-down optimisation.  This descends down matched nodes, then looks
at all un-matched non-terminal children.  If they have the same label as in
the corresponding sub-tree, they're matched.

kristapsdz/lowdown,kristapsdz/lowdown,kristapsdz/lowdown