anchor.diff:          fun[#callName] = descriptor[1];
           holder[name] = fun;
           funs = [fun];
  -        for (var pos = 4; pos < descriptor.length; pos += 3) {
  +        // We iterate in blocks of 3 but have to stop before we reach the
  +        // (optional) two trailing items. To accomplish this, we only iterate
  +        // until we reach length - 2.
  +        for (var pos = 4; pos < descriptor.length - 2; pos += 3) {
             var stubName = descriptor[pos];
             fun = compile(stubName, descriptor[pos + 2]);
             fun[#callName] = descriptor[pos + 1];
  
positive.code:       proto[tearOffName] =
            tearOff(funs, reflectionInfo, false, name, isIntercepted);
      }
      if (descriptor[pos] != null) {
        f[#argCnt] = descriptor[pos];
        f[#defArgValues] = descriptor[pos + 1];
      }
    } else {
      proto[name] = descriptor;
  
negative.code:        'tearOff': buildTearOffCode(backend),
         'parseFunctionDescriptor':
             js.js.statement(parseFunctionDescriptorBoilerplate,
                 {'argumentCount': js.string(namer.requiredParameterField),
                  'defaultArgumentValues': js.string(namer.defaultValuesField),
                  'callName': js.string(namer.callNameField)}),
  
         'cyclicThrow':
  