public String getSuffixString() {
   StringBuilder sb = new StringBuilder();
   for (int i = offset; i <= string.length(); i++) {
     sb.append(string.getChar(i));
   }
   return sb.toString();
 }
    public int countMatches(char[] array, int startMatch, int endMatch) {
      int ei = start;
      int mi = startMatch;
      int eend = end();

      for (; ei < eend && mi < endMatch; ei++, mi++) {
        assert mi >= 0;
        assert mi < array.length;

        if (array[mi] != string.getChar(ei)) {
          return ei - start;
        }
      }
      return ei - start;
    }
 public char getChar(int i) {
   return array != null ? array[i] : string.getChar(i);
 }
 public char getChar(int offset) {
   return string.getChar(start + offset);
 }