code: private int findFirst(CharSequence input, int beginIndex, int rewindIndex) {
          int first = -1;
          int digit = -1;
          for (int i = beginIndex; i >= rewindIndex; i--) {
              char c = input.charAt(i);
              if (Scanners.isAlpha(c)) {
                  first = i;
              } else if (Scanners.isDigit(c)) {
                  digit = i;
              } else if (!schemeSpecial(c)) {
                  break;
              }
          }
          if (first > 0 && first - 1 == digit) {
              // We don't want to extract "abc://foo" out of "1abc://foo".
              // ".abc://foo" and others are ok though, as they feel more like separators.
              first = -1;
          }
          return first;
      }
docs: See "scheme" in RFC 3986