code: private static int parseUGO(CharSequenceScanner parse) {
  
      int ugo = 0;
      while (true) {
        char c = parse.forceNext();
        if (c == 'u') {
          ugo = ugo | MASK_USER;
        } else if (c == 'g') {
          ugo = ugo | MASK_GROUP;
        } else if (c == 'o') {
          ugo = ugo | MASK_OTHERS;
        } else if (c == 'a') {
          ugo = MASK_ALL;
        } else {
          if (ugo == 0) {
            // if none of u/g/o/a was specified, then 'a' is the default
            ugo = MASK_ALL;
          }
          if (c != 0) {
            // we read too far
            parse.stepBack();
          }
          return ugo;
        }
      }
    }
docs: This method parses the {@code ugoa} prefix indicating which flags to modify.
  <ul>
  <li>{@code u} indicates that the flags of the {@link FileAccessClass#USER user} should be changed.</li>
  <li>{@code g} indicates that the flags of the {@link FileAccessClass#GROUP group} should be changed.</li>
  <li>{@code o} indicates that the flags of the {@link FileAccessClass#OTHERS others} should be changed.</li>
  <li>{@code a} indicates that the flags of all {@link FileAccessClass classes} should be changed.</li>
  </ul>
  
  @param parse is the current state of the parser.
  @return the bit-mask with the UGO-flags.