import java.util.jar.*; static L myClasses() { ClassLoader loader = myClassLoader(); L files = cast getOpt(loader, "files"); if (files == null) fail("No classes info (please run #1001639!)"); new L classes; for (File dir : files) { if (dir.isDirectory()) { for (File f : listFiles(dir)) { // TODO: subdirectories S s = f.getName(); if (s.endsWith(".class")) classes.add(dropSuffix(".class", s)); } } else if (dir.isFile()) pcall { JarFile jarFile = new JarFile(dir); try { Enumeration e = jarFile.entries(); while (e.hasMoreElements()) { JarEntry je = e.nextElement(); if (je.isDirectory() || !je.getName().endsWith(".class")) continue; S className = dropSuffix(".class", je.getName()); className = className.replace('/', '.'); classes.add(className); } } finally { jarFile.close(); } } } // for dir ret classes; }