code: protected boolean validate(char[] component, int soffset, int eoffset,
              BitSet generous) {
          // validate each component by generous characters
          if (eoffset == -1) {
              eoffset = component.length - 1;
          }
          for (int i = soffset; i <= eoffset; i++) {
              if (!generous.get(component[i])) { 
                  return false;
              }
          }
          return true;
      }
docs: Validate the URI characters within a specific component.
  The component must be performed after escape encoding. Or it doesn't
  include escaped characters.
  <p>
  It's not that much strict, generous.  The strict validation might be
  performed before being called this method.
  
  @param component the characters sequence within the component
  @param soffset the starting offset of the given component
  @param eoffset the ending offset of the given component
  if -1, it means the length of the component
  @param generous those characters that are allowed within a component
  @return if true, it's the correct URI character sequence