in test-discovery/src/com/intellij/rt/coverage/testDiscovery/instrumentation/OpenCloseFileTransformer.java [207:241]
void call(String userClassName, String userMethodName, Class<?>[] argTypes) {
visitMethodInsn(INVOKESTATIC, "java/lang/ClassLoader", "getSystemClassLoader", "()Ljava/lang/ClassLoader;", false);
pushConst(userClassName);
visitMethodInsn(INVOKEVIRTUAL, "java/lang/ClassLoader", "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;", false);
pushConst(userMethodName);
createArray("java/lang/Class", argTypes.length);
for (int i = 0; i < argTypes.length; i++) {
visitInsn(DUP);
putConst(i);
pushConst(argTypes[i]);
visitInsn(AASTORE);
}
visitMethodInsn(
INVOKEVIRTUAL, "java/lang/Class", "getDeclaredMethod",
"(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;", false);
visitInsn(ACONST_NULL);
createArray("java/lang/Object", argTypes.length);
for (int i = 0; i < argTypes.length; i++) {
visitInsn(DUP);
putConst(i);
visitVarInsn(ALOAD, i);
visitInsn(AASTORE);
}
visitMethodInsn(INVOKEVIRTUAL, "java/lang/reflect/Method", "invoke",
"(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", false);
visitInsn(POP);
}