ca.invokevirtual("java.lang.Object", "equals", "(Ljava/lang/Object;)Z"); // int,index,array
ca.ifEq(loopBegin);
// compare return types
ca.aload(2);
ca.invokevirtual("java.lang.reflect.Method", "getReturnType", "()Ljava/lang/Class;");
ca.loadType(DescriptorUtils.makeDescriptor(methodToLoad.getReturnType()));
ca.invokevirtual("java.lang.Object", "equals", "(Ljava/lang/Object;)Z"); // int,index,array
ca.ifEq(loopBegin);
// load the method parameters
Class<?>[] parameters = methodToLoad.getParameterTypes();
ca.aload(2);