docs: public static TypeCode toTypeCode(Class<?> type) {
  		if (type == null)
  			return TypeCode.Unknown;
  		else if (type.isArray())
  			return TypeCode.Array;
  		else if (type.isEnum())
  			return TypeCode.Enum;
  		else if (type.isPrimitive()) {
  			if (_booleanType.isAssignableFrom(type))
  				return TypeCode.Boolean;
  			if (_doubleType.isAssignableFrom(type))
  				return TypeCode.Double;
  			if (_floatType.isAssignableFrom(type))
  				return TypeCode.Float;
  			if (_longType.isAssignableFrom(type))
  				return TypeCode.Long;
  			if (_integerType.isAssignableFrom(type))
  				return TypeCode.Integer;
  		} else {
  			if (_booleanType.isAssignableFrom(type))
  				return TypeCode.Boolean;
  			if (_doubleType.isAssignableFrom(type))
  				return TypeCode.Double;
  			if (_floatType.isAssignableFrom(type))
  				return TypeCode.Float;
  			if (_longType.isAssignableFrom(type))
  				return TypeCode.Long;
  			if (_integerType.isAssignableFrom(type))
  				return TypeCode.Integer;
  			if (_stringType.isAssignableFrom(type))
  				return TypeCode.String;
  			if (_dateTimeType.isAssignableFrom(type))
  				return TypeCode.DateTime;
  			if (_durationType.isAssignableFrom(type))
  				return TypeCode.Duration;
  			if (_mapType.isAssignableFrom(type))
  				return TypeCode.Map;
  			if (_listType.isAssignableFrom(type))
  				return TypeCode.Array;
  			if (_enumType.isAssignableFrom(type))
  				return TypeCode.Enum;
  		}
  
  		return TypeCode.Object;
  	}