code: public Integer apply(final CharSequence left, final CharSequence right) {
          if (threshold != null) {
              return limitedCompare(left, right, threshold);
          }
          return unlimitedCompare(left, right);
      }
docs: <p>Find the Levenshtein distance between two Strings.</p>
  
  <p>A higher score indicates a greater distance.</p>
  
  <p>The previous implementation of the Levenshtein distance algorithm
  was from <a href="http://www.merriampark.com/ld.htm">http://www.merriampark.com/ld.htm</a></p>
  
  <p>Chas Emerick has written an implementation in Java, which avoids an OutOfMemoryError
  which can occur when my Java implementation is used with very large strings.<br>
  This implementation of the Levenshtein distance algorithm
  is from <a href="http://www.merriampark.com/ldjava.htm">http://www.merriampark.com/ldjava.htm</a></p>
  
  <pre>
  distance.apply(null, *)             = IllegalArgumentException
  distance.apply(*, null)             = IllegalArgumentException
  distance.apply("","")               = 0
  distance.apply("","a")              = 1
  distance.apply("aaapppp", "")       = 7
  distance.apply("frog", "fog")       = 1
  distance.apply("fly", "ant")        = 3
  distance.apply("elephant", "hippo") = 7
  distance.apply("hippo", "elephant") = 7
  distance.apply("hippo", "zzzzzzzz") = 8
  distance.apply("hello", "hallo")    = 1
  </pre>
  
  @param left the first string, must not be null
  @param right the second string, must not be null
  @return result distance, or -1
  @throws IllegalArgumentException if either String input {@code null}