code: @Override
    public T decode(final String s) {
      checkNotNull(s);
      try {
        return constructor.newInstance(s);
      } catch (final IllegalAccessException iae) {
        throw new ConversionException("Cannot access a single-string constructor for type " + type,
            iae);
      } catch (final InstantiationException ie) {
        throw new ConversionException(
            "Cannot instantiate " + type + ", probably because it is not concrete", ie);
      } catch (final InvocationTargetException ite) {
        throw new ConversionException("Exception thrown in constructor for " + type, ite);
      } catch (final ExceptionInInitializerError eiie) {
        throw new ConversionException(
            "Exception thrown when initializing classes for construction of " + type, eiie);
      }
    }
docs: Constructs a new instance of {@code T} by invoking its single-string constructor.
  
  @param s the string to convert from
  @return a new instance of {@code T}, instantiated as though {@code new T(s)} had been invoked
  @throws ConversionException  if the constructor isn't accessible, {@code T} isn't a concrete
  type, an exception is thrown by {@code T}'s constructor, or an
  exception is thrown when loading {@code T} or one of its
  dependency classes
  @throws NullPointerException if {@code s} is null