code: public <T> T getInstanceFromParsedArgs(Class<T> clazz) {
          if (!registeredClasses.contains(clazz)) {
              throw new IllegalArgumentException("Class not registered: " + clazz);
          }
          try {
              T obj = clazz.newInstance();
              for (Field field : clazz.getFields()) {
                  if (field.isAnnotationPresent(Opt.class)) {
                      String value = fieldValueMap.get(field);
                      if (value != null) {
                          setField(obj, field, value);
                      }
                  }
              }
              return obj;
          } catch (IllegalAccessException e) {
              throw new RuntimeException(e);
          } catch (InstantiationException e) {
              throw new RuntimeException(e);
          }
      }
docs: Gets an instance of the given class by using the no-argument constructor (which must exist)
  and then setting all fields annotated with @Opt with values cached by {@link #parseArgs(String[])}.