AsmAnalyzer { ClassReader findClass(String className, Map<String, ClassReader> zipClasses, Map<String, ClassReader> inOutFound) throws LogAbortException { ClassReader classReader = zipClasses.get(className); if (classReader == null) { throw new LogAbortException("Class %s not found by ASM in %s", className, mOsSourceJar); } inOutFound.put(className, classReader); return classReader; } AsmAnalyzer(Log log, List<String> osJarPath, AsmGenerator gen,
            String[] deriveFrom, String[] includeGlobs); void analyze();  }
@Test public void testFindClass() throws IOException, LogAbortException { Map<String, ClassReader> zipClasses = mAa.parseZip(mOsJarPath); TreeMap<String, ClassReader> found = new TreeMap<String, ClassReader>(); ClassReader cr = mAa.findClass("mock_android.view.ViewGroup$LayoutParams", zipClasses, found); assertNotNull(cr); assertEquals("mock_android/view/ViewGroup$LayoutParams", cr.getClassName()); assertArrayEquals(new String[] { "mock_android.view.ViewGroup$LayoutParams" }, found.keySet().toArray()); assertArrayEquals(new ClassReader[] { cr }, found.values().toArray()); }