AsmAnalyzer { Map<String,ClassReader> parseZip(List<String> jarPathList) throws IOException { TreeMap<String, ClassReader> classes = new TreeMap<String, ClassReader>(); for (String jarPath : jarPathList) { ZipFile zip = new ZipFile(jarPath); Enumeration<? extends ZipEntry> entries = zip.entries(); ZipEntry entry; while (entries.hasMoreElements()) { entry = entries.nextElement(); if (entry.getName().endsWith(".class")) { ClassReader cr = new ClassReader(zip.getInputStream(entry)); String className = classReaderToClassName(cr); classes.put(className, cr); } } } return classes; } AsmAnalyzer(Log log, List<String> osJarPath, AsmGenerator gen,
            String[] deriveFrom, String[] includeGlobs); void analyze();  }
@Test public void testParseZip() throws IOException { Map<String, ClassReader> map = mAa.parseZip(mOsJarPath); assertArrayEquals(new String[] { "mock_android.dummy.InnerTest", "mock_android.dummy.InnerTest$DerivingClass", "mock_android.dummy.InnerTest$MyGenerics1", "mock_android.dummy.InnerTest$MyIntEnum", "mock_android.dummy.InnerTest$MyStaticInnerClass", "mock_android.dummy.InnerTest$NotStaticInner1", "mock_android.dummy.InnerTest$NotStaticInner2", "mock_android.view.View", "mock_android.view.ViewGroup", "mock_android.view.ViewGroup$LayoutParams", "mock_android.view.ViewGroup$MarginLayoutParams", "mock_android.widget.LinearLayout", "mock_android.widget.LinearLayout$LayoutParams", "mock_android.widget.TableLayout", "mock_android.widget.TableLayout$LayoutParams" }, map.keySet().toArray()); }