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);
			}
		};
	}
public static < T > Conversion < T > to ( final Class < T > type ) { 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 ) ; } } ; }
Return a {@link Conversion} to the target type. Note, the returned
conversion instance is not the one that was registered, but rather is
proxied.