private static String wordShapeChris2(String s,boolean omitIfInBoundary,Collection<String> knownLCWords){
  int len=s.length();
  if (len <= BOUNDARY_SIZE * 2) {
    return wordShapeChris2Short(s,len,knownLCWords);
  }
 else {
    return wordShapeChris2Long(s,omitIfInBoundary,len,knownLCWords);
  }
}

private static String wordShapeChris2 ( String s , boolean omitIfInBoundary , Collection < String > knownLCWords ) { int len = s . length ( ) ; if ( len <= BOUNDARY_SIZE * 2 ) { return wordShapeChris2Short ( s , len , knownLCWords ) ; } else { return wordShapeChris2Long ( s , omitIfInBoundary , len , knownLCWords ) ; } }
this one picks up on dan2 ideas , but seeks to make less distinctions mid sequence by sorting for long words , but to maintain extra distinctions for short words . it exactly preserves the character shape of the first and last 2 ( i . e . , boundary_size ) characters and then will record shapes that occur between them ( perhaps only if they are different )
