docs: public Option[] discoverOptionsViaReflection() {
          //Class<? extends AbstractOptionHandler> c = this.getClass();
          Class c = this.handler.getClass();
          Field[] fields = c.getFields();
          List<Option> optList = new LinkedList<Option>();
          for (Field field : fields) {
              String fName = field.getName();
              Class<?> fType = field.getType();
              if (fType.getName().endsWith("Option")) {
                  if (Option.class.isAssignableFrom(fType)) {
                      Option oVal = null;
                      try {
                          field.setAccessible(true);
                          oVal = (Option) field.get(this.handler);
                      } catch (IllegalAccessException ignored) {
                          // cannot access this field
                      }
                      if (oVal != null) {
                          optList.add(oVal);
                      }
                  }
              }
          }
          return optList.toArray(new Option[optList.size()]);
      }