docs: public final <T> void addArgument(Class<T> cls, String name)
      {
          if (map.containsKey(name))
          {
              throw new IllegalArgumentException(name+" is already added as option");
          }
          if (hasArrayArgument)
          {
              throw new IllegalArgumentException("no argument allowed after array argument");
          }
          types.add(cls);
          names.add(name);
          if (cls.isArray())
          {
              hasArrayArgument = true;
          }
      }