@Override
 public void endTree(Node left, Node right) {
   if (intersects(left, right)) {
     super.endTree(left, right);
   }
   tracker.endTree(left, right);
 }
 @Override
 public boolean tree(Node left, Node right) {
   tracker.tree(left, right);
   if (intersects(left, right)) {
     return super.tree(left, right);
   }
   return false;
 }
 private boolean intersects(Bounded left, Bounded right) {
   return intersects(left, tracker.currentLeftMetadataId())
       || intersects(right, tracker.currentRightMetadataId());
 }