if (baseTps.length == 1 && baseTps[0] == defs.ANY_TYPE) interfaceNames = EMPTY_STRING_ARRAY; else { interfaceNames = new String[baseTps.length]; for (int i = 0; i < baseTps.length; ++i) { Symbol baseSym = baseTps[i].symbol(); assert baseSym.isInterface() : cSym + " implements " + baseSym; interfaceNames[i] = javaName(baseSym); } }
    protected void enterClass(Symbol cSym) {        String javaName = javaName(cSym);        scalac.symtab.Type[] baseTps = cSym.info().parents();        String superClassName;        String[] interfaceNames;        if (cSym.isInterface()) {            superClassName = JAVA_LANG_OBJECT;            if (baseTps.length == 1 && baseTps[0] == defs.ANY_TYPE)                interfaceNames = EMPTY_STRING_ARRAY;            else {                interfaceNames = new String[baseTps.length];                for (int i = 0; i < baseTps.length; ++i) {                    Symbol baseSym = baseTps[i].symbol();                    assert baseSym.isInterface() : cSym + " implements " + baseSym;                    interfaceNames[i] = javaName(baseSym);                }            }        } else {            superClassName = javaName(baseTps[0].symbol());            interfaceNames = new String[Math.max(0, baseTps.length - 1)];            for (int i = 1; i < baseTps.length; ++i) {                Symbol baseSym = baseTps[i].symbol();                assert baseSym.isInterface() : cSym + " implements " + baseSym;                interfaceNames[i-1] = javaName(baseSym);            }        }        ClassGen cGen = new ClassGen(javaName,                                     superClassName,                                     sourceFileName,                                     modifiersStoJ(cSym.flags) | cst.ACC_SUPER,                                     interfaceNames);        classStack.addFirst(cGen);        updateClassContext();    }