code: @Override
      public T convertFromString(Class<? extends T> cls, String str) {
          try {
              return fromString.newInstance(str);
          } catch (IllegalAccessException ex) {
              throw new IllegalStateException("Constructor is not accessible: " + fromString);
          } catch (InstantiationException ex) {
              throw new IllegalStateException("Constructor is not valid: " + fromString);
          } catch (InvocationTargetException ex) {
              if (ex.getCause() instanceof RuntimeException) {
                  throw (RuntimeException) ex.getCause();
              }
              throw new RuntimeException(ex.getMessage(), ex.getCause());
          }
      }
docs: Converts the {@code String} to an object.
  @param cls  the class to convert to, not null
  @param str  the string to convert, not null
  @return the converted object, may be null but generally not