matches = bs.indexOf(as) == -1 ? 0 : 1;
return bs.indexOf(as) == -1 ? 1.0 : 0.4;
  private double childListDist( ONode a, ONode b) {    // Make child lists representing children on a & b    StringBuffer ac = new StringBuffer();    StringBuffer bc = new StringBuffer();    if( a.getChildCount()== 0 && b.getChildCount() == 0)      return 0.5; // Zero children is also a match!    for( int i=0;i<a.getChildCount();i++) {      int hash = a.getChild(i).toString().hashCode();//      ac.append((char) (hash >> 16));      ac.append((char) (hash & 0xffff));    }    for( int i=0;i<b.getChildCount();i++) {      int hash = b.getChild(i).toString().hashCode();//      bc.append((char) (hash >> 16));      bc.append((char) (hash & 0xffff));    }    String as=ac.toString(), bs=bc.toString();    int matches=0;    if( as.length()==0)      return 1.0;    else if( as.length()==1)      matches = bs.indexOf(as) == -1 ? 0 : 1;    else for( int i=0;i<as.length()-1;i++) {      if( bs.indexOf(as.substring(0,i+2)) != -1 )        matches++;    }    return 1.0 - ((double) matches)/((double) (as.length()-1)+0.2*Math.abs(as.length()-bs.length()));  }