code: public void parseArgsNoExit(String[] args) throws ParseException {
          // Parse command line.
          CommandLine cmd = null;
          CommandLineParser parser = new PosixParser();
          cmd = parser.parse(options, args);
  
          // Special handling of --flagfile.
          if (cmd.hasOption(flagfileOpt.getLongOpt())) {
              String value = cmd.getOptionValue(flagfileOpt.getLongOpt());
              String[] ffArgs = readFlagFile(value);
              parseArgs(ffArgs);
          }
          
          // Process each flag mapped to a field.
          fieldValueMap = new HashMap<>();
          try {
              for (Option apacheOpt : optionFieldMap.keySet()) {
                  Field field = optionFieldMap.get(apacheOpt);
                  if (cmd.hasOption(apacheOpt.getLongOpt())) {
                      String value = apacheOpt.hasArg() ? cmd.getOptionValue(apacheOpt.getLongOpt()) : "true";
                      if (Modifier.isStatic(field.getModifiers())) {
                          // For static fields, set the value directly to the field.
                          setStaticField(field, value);
                      } else {
                          // For non-static fields, cache the value for later use by getInstanceFromParsedArgs(). 
                          fieldValueMap.put(field, value);
                      }
                  }
              }
          } catch (IllegalAccessException e) {
              throw new RuntimeException(e);
          }
      }
docs: Parses the command line arguments and sets any of public static fields annotated with @Opt
  that have been registered with this {@link ArgParser} via {@link #registerClass(Class)}.
  
  @throws ParseException if a parser error occurs.