if( best!=null && (bestCount == 1 && best.distance > 0.1 ))
if( best!=null && (bestCount == 1 && (Math.min(best.leftRightDown,best.distance) > 0.1 || best.candidate.content.getInfoSize() < COPY_THRESHOLD )))
  private void match( BaseNode base, BranchNode branch ) {    Vector candidates = findCandidates( base, branch ); // Find candidates for node branch in base    // Find best trees    int bestCount = 0;    CandidateEntry best = null;    Vector bestCandidates = new Vector();    for( Iterator i = candidates.iterator(); i.hasNext(); ) {      CandidateEntry candidate = (CandidateEntry) i.next();      int thisCount = dfsMatch( candidate.candidate, branch, 0, null );      if( thisCount == bestCount )        bestCandidates.add( candidate );      else if( thisCount > bestCount ) {        bestCount = thisCount;        bestCandidates.clear();        bestCandidates.add( candidate );      }    }    // Resolve ambiguities if any exist...    if( bestCandidates.size() > 1 ) {      // Ambiguities - we need to find out which one is the best...      // First calc all missing left-right correlations      for( Iterator i = bestCandidates.iterator(); i.hasNext(); ) {        CandidateEntry candidate = (CandidateEntry) i.next();        if( candidate.leftRightDist < 0.0 )          candidate.leftRightDist = Math.min( getDistanceOfLeft(candidate.candidate,branch),                                      getDistanceOfLeft(candidate.candidate,branch));      }      Collections.sort(bestCandidates,candComp);    }    best = bestCandidates.isEmpty() ? null : (CandidateEntry) bestCandidates.elementAt(0);    if( best!=null && (bestCount == 1 && best.distance > 0.1 ))      best=null; //System.out.println("No candidate was very good, leaving unmatched" );    // Add matchings and find nodes below matching subtree    Vector stopNodes = new Vector();    if( best != null )      dfsMatch( best.candidate, branch, 0, stopNodes );    else {      // Unmatched      for( int i=0;i<branch.getChildCount();i++)        stopNodes.add(branch.getChild(i));    }    // Recurse    for( Iterator i=stopNodes.iterator();i.hasNext();)      match(base,(BranchNode) i.next());  }