protected String doComplete(Symbol peckage) {
protected String doComplete(Symbol root) { assert root.isRoot() || root.isPackage(): Debug.show(root); Symbol peckage = root.isRoot() ? root : root.moduleClass();
    protected String doComplete(Symbol peckage) {        // collect JVM and source members	boolean isRoot = peckage.isRoot();        HashMap sources = new HashMap();        HashMap classes = new HashMap();        HashMap packages = new HashMap();        for (Iterator i = directory.list(); i.hasNext(); ) {            AbstractFile file = (AbstractFile)i.next();            String filename = file.getName();            if (file.isDirectory()) {                if (filename.equals("META-INF")) continue;                packages.put(filename, file);                continue;            }            if (!isRoot && filename.endsWith(".class")) {                String name = filename.substring(0, filename.length() - 6);                if (!classes.containsKey(name)) classes.put(name, file);                continue;            }            if (!isRoot && filename.endsWith(".scala")) {                String name = filename.substring(0, filename.length() - 6);                if (!sources.containsKey(name)) sources.put(name, file);                continue;            }	}        // create JVM and source members        Scope members = new Scope();        for (Iterator i = sources.entrySet().iterator(); i.hasNext(); ) {            HashMap.Entry entry = (HashMap.Entry)i.next();            String name = (String)entry.getKey();            AbstractFile sfile = (AbstractFile)entry.getValue();            AbstractFile cfile = (AbstractFile)classes.remove(name);            if (global.separate && cfile != null) {                if (cfile.lastModified() > sfile.lastModified()) {                    classes.put(name, cfile);                    continue;                }            }            packages.remove(name);            Name classname = Name.fromString(name).toTypeName();            SymbolLoader loader = new SourceCompleter(global, sfile);            peckage.newLoadedClass(0, classname, loader, members);        }        for (Iterator i = classes.entrySet().iterator(); i.hasNext(); ) {            HashMap.Entry entry = (HashMap.Entry)i.next();            String name = (String)entry.getKey();            AbstractFile cfile = (AbstractFile)entry.getValue();            packages.remove(name);            Name classname = Name.fromString(name).toTypeName();            SymbolLoader loader = new ClassParser(global, cfile);            peckage.newLoadedClass(JAVA, classname, loader, members);        }        for (Iterator i = packages.entrySet().iterator(); i.hasNext(); ) {            HashMap.Entry entry = (HashMap.Entry)i.next();            String name = (String)entry.getKey();            AbstractFile dfile = (AbstractFile)entry.getValue();            SymbolLoader loader = new PackageParser(global, dfile);            peckage.newLoadedPackage(Name.fromString(name), loader, members);        }        // collect and create CLR members	if (global.target == global.TARGET_MSIL)            CLRPackageParser.instance(global).importCLRTypes(peckage, members);        // initialize package        peckage.setInfo(Type.compoundType(Type.EMPTY_ARRAY, members, peckage));        return "directory path '" + directory + "'";    }