}
}
static Method getToNativeMethod(ToNativeType toNativeType, AsmClassLoader classLoader) {
ToNativeConverter toNativeConverter = toNativeType.getToNativeConverter();
if (toNativeConverter == null) {
return null;
}
try {
Class<? extends ToNativeConverter> toNativeConverterClass = toNativeConverter.getClass();
if (Modifier.isPublic(toNativeConverterClass.getModifiers())) {
for (Method method : toNativeConverterClass.getMethods()) {
if (!method.getName().equals("toNative")) continue;
Class[] methodParameterTypes = method.getParameterTypes();
if (toNativeConverter.nativeType().isAssignableFrom(method.getReturnType())
&& methodParameterTypes.length == 2
&& methodParameterTypes[0].isAssignableFrom(toNativeType.getDeclaredType())
&& methodParameterTypes[1] == ToNativeContext.class
&& methodIsAccessible(method)
&& classIsVisible(classLoader, method.getDeclaringClass())) {