anchor.diff:    }
   
     void _addJsInteropStubs(LibrariesMap librariesMap) {
  -    // TODO(26456): we should be using codegenWorld instead of resolverWorld
  -    // to determine what invocations could be live but codegenWorld has a bug
  -    // resulting in it missing some invocations.
       if (_classes.containsKey(_compiler.coreClasses.objectClass)) {
         var toStringInvocation = namer.invocationName(Selectors.toString_);
         // TODO(jacobr): register toString as used so that it is always accessible
  
positive.code:                   // Check whether the arity matches this member.
                    var argumentCount = selector.argumentCount;
                    // JS interop does not support named arguments.
                    if (selector.namedArgumentCount > 0) break;
                    if (argumentCount < minArgs) break;
                    if (argumentCount > maxArgs) break;
                    var stubName = namer.invocationName(selector);
                    if (!stubNames.add(stubName.key)) break;
                    var parameters =
                        new List<String>.generate(argumentCount, (i) => 'p$i');
  
  
negative.code: 
              if (member.isSetter || (member.isField && !member.isConst)) {
                var selectors =
                    _compiler.codegenWorld.setterInvocationsByName(member.name);
                if (selectors != null && !selectors.isEmpty) {
                  var stubName = namer.setterForElement(member);
                  if (stubNames.add(stubName.key)) {
  