/** Recursively creates enclosing types first. */
 private void createCompiledClass(ClassFile classFile, Map<ClassFile, CompiledClass> results) {
   if (results.containsKey(classFile)) {
     // Already created.
     return;
   }
   CompiledClass enclosingClass = null;
   if (classFile.enclosingClassFile != null) {
     ClassFile enclosingClassFile = classFile.enclosingClassFile;
     createCompiledClass(enclosingClassFile, results);
     enclosingClass = results.get(enclosingClassFile);
     assert enclosingClass != null;
   }
   String internalName = CharOperation.charToString(classFile.fileName());
   CompiledClass result =
       new CompiledClass(
           classFile.getBytes(), enclosingClass, isLocalType(classFile), internalName);
   results.put(classFile, result);
 }
 private void addBinaryTypes(Collection<CompiledClass> compiledClasses) {
   for (CompiledClass cc : compiledClasses) {
     binaryTypes.put(cc.getInternalName(), cc);
   }
 }