code: public FP64 extend(char c) {
      byte b1 = (byte)(c & 0xff);
      extend(b1);
      byte b2 = (byte) (c >>> 8);
      // NOTE pdalbora 23-Jul-2009 -- The following check is intentional. We don't extend the high order byte when it's
      // zero, in order to avoid "weakening" the fingerprint of primarily ASCII data by adding unnecessary bits. The
      // tradeoff for doing this is that two characters in the low order byte range (<= 0x00FF) will be
      // indistinguishable from the corresponding character in the high order byte range (> 0x00FF). For example, the
      // character sequence (0x0022, 0x0021) will have the same fingerprint as the character sequence (0x2122). However,
      // it would be highly unlikely for this to happen, as ASCII data and non-ASCII data are unlikely to mix together.
      // Even in the case where such a sequence pair occurred in two strings, the likelihood of it yielding a collision
      // would be very low, when there other characters in the strings.
      if (b2 != 0) {
        extend(b2);
      }
      return this;
    }
docs: Extends this fingerprint by the character <code>c</code>.
  
  @return
  the resulting fingerprint.