public TriMatching( ONode left, ProtoBestMatching ml, ONode base, ProtoBestMatching mr, ONode right) { XMLn2n = new java.util.HashMap(); leftRoot=(BranchNode) buildTree(null,-1,left, new NodeFactory() { Node makeNode(Node p,int c, XMLNode cont) { return new BranchNode(p,c,cont); }}); baseRoot=(BaseNode) buildTree(null,-1,base, new NodeFactory() { Node makeNode(Node p,int c, XMLNode cont) { return new BaseNode(p,c,cont); }}); rightRoot=(BranchNode) buildTree(null,-1,right, new NodeFactory() { Node makeNode(Node p,int c, XMLNode cont) { return new BranchNode(p,c,cont); }});  addMappings( baseRoot, ml,mr ); XMLn2n = null;
public TriMatching( BranchNode left, BaseNode base, BranchNode right ) { super( base, right ); leftRoot =left; rightRoot = right; swapLeftRight( base ); buildMatching( base, left ); setPartners( left, false ); setPartners( right, true );
  public TriMatching( ONode left, ProtoBestMatching ml, ONode base, ProtoBestMatching mr, ONode right) {     XMLn2n = new java.util.HashMap();    leftRoot=(BranchNode) buildTree(null,-1,left, new NodeFactory() {        Node makeNode(Node p,int c, XMLNode cont) {          return new BranchNode(p,c,cont);        }});    baseRoot=(BaseNode) buildTree(null,-1,base, new NodeFactory() {        Node makeNode(Node p,int c, XMLNode cont) {          return new BaseNode(p,c,cont);        }});    rightRoot=(BranchNode) buildTree(null,-1,right, new NodeFactory() {        Node makeNode(Node p,int c, XMLNode cont) {          return new BranchNode(p,c,cont);        }});    addMappings( baseRoot, ml,mr );    XMLn2n = null; // Free some memory.../*    java.io.PrintWriter pw = new java.io.PrintWriter(System.out );    leftRoot.debugTree(pw,0);    pw.println("<<-----------------");    rightRoot.debugTree(pw,0);    pw.flush();*/  }