ReflectionUtil.getPrimitiveType(original.getClass()) == targetType) return (T) original;
if (external.size() > 0) {
Iterator<ICoersion> external = this.external.iterator();
while (external.hasNext()) {
ICoersion coersion = external.next();
if (coersion.isCanCoerce(original, targetType)) return (T) coersion.coerce(original, targetType);
}
}
Iterator<ICoersion> internal = this.internal.iterator();
while (internal.hasNext()) {
ICoersion coersion = internal.next();
if (coersion.isCanCoerce(original, targetType)) return (T) coersion.coerce(original, targetType);
}
if (original instanceof CharSequence) {
return (T) this.coerceCharSequence((CharSequence)original, targetType);
}