MethodHandle last = identity;
for(int i = factories.length; i-- > 0;) {
final GuardedInvocation next = factories[i].convertToType(sourceType, targetType);
if(next != null) {
next.assertType(type);
last = next.compose(last);
}
}
return last == identity ? IDENTITY_CONVERSION : last;
}