code: private Type asSuper(Type t, Type sup) {
              return (sup.hasTag(ARRAY)) ?
                      new ArrayType(asSuper(types.elemtype(t), types.elemtype(sup)), syms.arrayClass) :
                      types.asSuper(t, sup.tsym);
          }
docs: where