src/main/java/org/eiichiro/bootleg/Types.java
public static boolean isUserDefinedValueType(Type type) {
		Class<?> rawType = getRawType(type);
		
		if (rawType == null) {
			return false;
		}
		
		for (Constructor<?> constructor : rawType.getConstructors()) {
			Class<?>[] parameterTypes = constructor.getParameterTypes();
			
			if (parameterTypes.length == 1
					&& parameterTypes[0].equals(String.class)) {
				return true;
			}
		}
		
		for (Method method : rawType.getMethods()) {
			if (method.getName().equals("valueOf")
					&& Modifier.isStatic(method.getModifiers())) {
				return true;
			}
		}
		
		return false;
	}
public static boolean isUserDefinedValueType(Type type) {
		Class<?> rawType = getRawType(type);
		
		if (rawType == null) {
			return false;
		}
		
		for (Constructor<?> constructor : rawType.getConstructors()) {
			Class<?>[] parameterTypes = constructor.getParameterTypes();
			
			if (parameterTypes.length == 1
					&& parameterTypes[0].equals(String.class)) {
				return true;
			}
		}
		
		for (Method method : rawType.getMethods()) {
			if (method.getName().equals("valueOf")
					&& Modifier.isStatic(method.getModifiers())) {
				return true;
			}
		}
		
		return false;
	}
Returns <code>true</code> if the specified type is an user define value
type.
User defined value type must satisfy either of the following condition.
<ol>
<li>(The class) has a public constructor that takes one String.class parameter.</li>
<li>Has a public static factory method that named 'valueOf' and takes one
String.class parameter.</li>
</ol>

@param type The type to be tested.
@return <code>true</code> if the specified type is an user define value
type.