docs: public static <T> TypeFactory<T> withComparator( final TypeFactory<T> original,
                                                       final Comparator<T> comparator ) {
          if (comparator == null) return original;
          return new TypeFactory<T>() {
  
              @Override
              public Class<T> getType() {
                  return original.getType();
              }
  
              @Override
              public Comparator<T> getComparator() {
                  return comparator;
              }
  
              @Override
              public String getTypeName() {
                  return original.getTypeName();
              }
  
              @Override
              public T create( String value ) throws ValueFormatException {
                  return original.create(value);
              }
  
              @Override
              public T create( Object value ) throws ValueFormatException {
                  return original.create(value);
              }
  
              @Override
              public String asString( Object value ) {
                  return original.asString(value);
              }
  
              @Override
              public long length( Object value ) {
                  return original.length(value);
              }
  
              @Override
              public String asReadableString( Object value ) {
                  return original.asReadableString(value);
              }
  
              @Override
              public String toString() {
                  return original.toString() + " with comparator " + comparator;
              }
  
          };
      }