in util/src/com/intellij/rt/coverage/instrumentation/ClassWriterImpl.java [129:154]
private synchronized ClassReader getOrLoadClassReader(String className) throws IOException {
Map<String, ClassReader> loaderClassReaders = myClassReaders.get(myClassLoader);
if (loaderClassReaders == null) {
myClassReaders.put(myClassLoader, loaderClassReaders = new HashMap<String, ClassReader>());
}
ClassReader classReader = loaderClassReaders.get(className);
if (classReader == null) {
InputStream is = null;
try {
String resource = className + ".class";
if (myClassLoader != null) {
is = myClassLoader.getResourceAsStream(resource);
}
if (is == null) {
is = ClassLoader.getSystemResourceAsStream(resource);
}
if (is == null) {
throw new FrameComputationClassNotFoundException("Class " + className + " not found");
}
loaderClassReaders.put(className, classReader = new ClassReader(is));
} finally {
CoverageIOUtil.close(is);
}
}
return classReader;
}