anchor.diff:      return list;
     }
   
  -  static bool hasMember(InstanceMirror mirror, Symbol symbol) {
  +  static bool hasMethod(InstanceMirror mirror, Symbol symbol) {
       return hasMethodHelper(mirror.type, symbol);
     }
   
  +  static final objectClassMirror = reflectClass(Object);
  +  static final Set<Symbol> objectClassInstanceMethods =
  +      new Set<Symbol>.from([#toString, #noSuchMethod]);
  +
     static final Function hasMethodHelper = (() {
  -    var objectType = reflect(Object).type;
       try {
         // Use ClassMirror.instanceMembers if available. It contains local
         // as well as inherited members.
  -      objectType.instanceMembers;
  -      return (type, symbol) => type.instanceMembers[symbol] is MethodMirror;
  +      objectClassMirror.instanceMembers;
  +      // For SDK 1.2 we have to use a somewhat complicated helper for this
  +      // to work around bugs in the dart2js implementation.
  +      return hasInstanceMethod;
       } on NoSuchMethodError catch (e) {
         // For SDK 1.0 we fall back to just using the local members.
         return (type, symbol) => type.members[symbol] is MethodMirror;
  
positive.code:     }
      return null;
    })();
  }
  
  /**
  
negative.code:   _assignToNonExisting(scope, value) => null;
  
    static Function createInvokeClosure(InstanceMirror mirror, Symbol symbol) {
      if (!hasMethod(mirror, symbol)) return null;
      return relaxFnArgs(([a0, a1, a2, a3, a4, a5]) {
        var arguments = stripTrailingNulls([a0, a1, a2, a3, a4, a5]);
        return mirror.invoke(symbol, arguments).reflectee;
  