anchor.diff:        var reflectionInfo = descriptor[4];
         proto[descriptor[2]] = 
             tearOff(funs, reflectionInfo, false, name, isIntercepted);
  +    }
  +    // Install the alias for super calls on the prototype chain.
  +    if (desc[5] != null) {
  +      proto[desc[5]] = desc[0];
       }
     } else {
       proto[name] = descriptor;
  
positive.code:   /// [DartMethod.tearOffName]
    /// [JavaScriptBackend.isInterceptedMethod]
    /// functionType
    ///
    /// followed by
    ///
  
negative.code:       return [js.string(stub.name), callName, stub.code];
      }
  
      if (method is InstanceMethod) {
        if (method.needsTearOff || method.aliasName != null) {
          /// See [parseFunctionDescriptorBoilerplate] for a full description of
          /// the format.
          // [name, [function, callName, tearOffName, isIntercepted, functionType,
          //     aliasName, stub1_name, stub1_callName, stub1_code, ...]
          bool isIntercepted = backend.isInterceptedMethod(method.element);
          var data = [method.code];
          data.add(js.string(method.callName));
          data.add(js.string(method.tearOffName));
          data.add(new js.LiteralBool(isIntercepted));
          data.add(_generateFunctionType(method.type));
          if (method.aliasName != null) {
            data.add(js.string(method.aliasName));
          } else {
            data.add(new js.LiteralNull());
          }
          data.addAll(method.parameterStubs.expand(makeNameCallNameCodeTriplet));
          return [js.string(method.name), new js.ArrayInitializer(data)];
        } else {
  