code: protected static <P extends AbstractDecoderProxy<T>, T> Object newInstance(
          final Class<P> proxyType, final Class<T> decoderType, final T decoder) {
  
          if (proxyType == null) {
              throw new NullPointerException("proxyType");
          }
  
          if (!StringDecoderProxy.class.isAssignableFrom(proxyType)) {
              throw new IllegalArgumentException(
                  "proxyType(" + proxyType + ") is not assignable to "
                  + StringDecoderProxy.class);
          }
  
          return newInstance(DECODER.getClassLoader(), new Class<?>[]{DECODER},
                             proxyType, decoderType, decoder);
      }
docs: Creates a new proxy instance.
  
  @param <P> proxy type parameter
  @param <T> user decoder type parameter
  @param proxyType proxy type
  @param decoderType decoder type
  @param decoder decoder
  
  @return a new instance.