private void findFuzzyMatches( BaseNode tree, BranchNode key, Vector candidates ) {
protected void findFuzzyMatches( BaseNode tree, BranchNode key, Vector candidates ) {
  private void findFuzzyMatches( BaseNode tree, BranchNode key, Vector candidates ) {    SortedSet cset = new TreeSet(candComp);    double cutoff = 2*MAX_FUZZY_MATCH;    for( Iterator i = new DFSTreeIterator(tree);i.hasNext();) {      BaseNode cand = (BaseNode) i.next();      /* XPERboolean parentMatch = cand.parent != null && key.parent != null &&        ((BranchNode) key.parent).getBaseMatch() == cand.parent;      double discount = parentMatch ? PARENT_DISCOUNT : 1.0;*/      double discount = 1.0;      double lrdDist = discount*Math.min(        Math.min(getDistanceOfLeft(key,cand),getDistanceOfRight(key,cand)),        measure.childListDistance(key,cand));      double minDist = discount*Math.min(lrdDist,measure.getDistance(cand,key));      if( minDist < 2*MAX_FUZZY_MATCH ) {        cset.add(new CandidateEntry(cand,minDist,lrdDist));        cutoff = cutoff < 2*minDist ? cutoff : 2*minDist;      }    }//    System.out.println("Fuzz set size=" + cset.size());    for( Iterator i = cset.iterator();i.hasNext();) {      CandidateEntry en = (CandidateEntry) i.next();      if( en.distance > cutoff )        break;      else        candidates.add(en);    }    //System.out.println("Fuzz set size=" + candidates.size());  }