code: public static <T> Conversion<T> to(final Class<T> type) {
  
  		/**
  		 * Proxies type conversion to allow for the fact that the value may
  		 * provide its own conversion and other subtleties. The goal is to
  		 * preserve the identical behavior as if {@link #asType(Class,Object)}
  		 * were called.
  		 *
  		 */
  		return new Conversion<T>() {
  
  			@Override
  			public Object[] getTypeKeys() {
  				Conversion<?> conversion=typeConversions.get(type);
  				return (conversion!=null)
  					? TypeConverter.getTypeKeys(conversion)
  						.toArray(new Object[0])
  					: new Object[0];
  			}
  
  			@Override
  			public T convert(Object value) {
  				return TypeConverter.convert(type,value);
  			}
  		};
  	}
docs: Return a {@link Conversion} to the target type. Note, the returned
  conversion instance is not the one that was registered, but rather is
  proxied.