nc.addChild(clonedAndMatchedTree(n.getChild(i),left,setMatches));
nc.addChild(clonedAndMatchedTree(n.getChild(i),left,resetMatches));
  protected BranchNode clonedAndMatchedTree( BaseNode n, boolean left, boolean setMatches ) {    BranchNode nc = new BranchNode( n.getContent() );    nc.setBaseMatch(n,BranchNode.MATCH_FULL);    if( setMatches ) {      if( left ) {        n.getLeft().clearMatches();        n.getLeft().addMatch(nc);      } else {        n.getRight().clearMatches();        n.getRight().addMatch(nc);      }    }    for( int i=0;i<n.getChildCount();i++)      nc.addChild(clonedAndMatchedTree(n.getChild(i),left,setMatches));    return nc;  }