imSym = isNestedClass(classSym) ? classSym.owner().newMethod(pos, 0, imName) : classSym.newStaticMethod(pos, 0, imName);
int flags = classSym.isAbstractType() ? Modifiers.DEFERRED : 0;  imSym = isStatic ? classSym.newStaticMethod(pos, 0, imName) : classSym.owner().newMethod(pos, flags, imName);
    private Symbol getInstMethSym(Symbol classSym) {        Symbol imSym = (Symbol)instantiator.get(classSym);        if (imSym == null) {            int pos = classSym.pos;            Name imName = Names.INSTANTIATE(classSym);            imSym = isNestedClass(classSym)                ? classSym.owner().newMethod(pos, 0, imName)                : classSym.newStaticMethod(pos, 0, imName);            // TODO special case for monomorphic instantiations            Symbol[] argTypes;            if (true || classSym.typeParams().length > 0) {                Symbol typesP =                    imSym.newVParam(pos, 0, Name.fromString("types"));                typesP.setInfo(defs.ARRAY_TYPE(defs.TYPE_TYPE()));                argTypes = new Symbol[]{ typesP };            } else                argTypes = Symbol.EMPTY_ARRAY;            imSym.setInfo(new Type.MethodType(argTypes,                                              defs.SCALACLASSTYPE_TYPE()));            instantiator.put(classSym, imSym);        }        return imSym;    }