private List<ClassSymbol> enterNewClassFiles(Context currentContext) {
        ClassReader reader = ClassReader.instance(currentContext);
        Name.Table names = Name.Table.instance(currentContext);
        List<ClassSymbol> list = List.nil();

        for (Map.Entry<String,JavaFileObject> entry : filer.getGeneratedClasses().entrySet()) {
            Name name = names.fromString(entry.getKey());
            JavaFileObject file = entry.getValue();
            if (file.getKind() != JavaFileObject.Kind.CLASS)
                throw new AssertionError(file);
            ClassSymbol cs;
            if (isPkgInfo(file, JavaFileObject.Kind.CLASS)) {
                Name packageName = Convert.packagePart(name);
                PackageSymbol p = reader.enterPackage(packageName);
                if (p.package_info == null)
                    p.package_info = reader.enterClass(Convert.shortName(name), p);
                cs = p.package_info;
                if (cs.classfile == null)
                    cs.classfile = file;
            } else
                cs = reader.enterClass(name, file);
            list = list.prepend(cs);
        }
        return list.reverse();
    }