docs: protected boolean isValidScheme(String scheme) {
          if (scheme == null) {
              return false;
          }
          
          // TODO could be removed if external schemes were checked in the ctor before being stored
          if (!SCHEME_PATTERN.matcher(scheme).matches()) {
              return false;
          }
          
          if (isOff(ALLOW_ALL_SCHEMES) && !allowedSchemes.contains(scheme.toLowerCase(Locale.ENGLISH))) {
              return false;
          }
          
          return true;
      }