anchor.diff:    bool _isTop(DartType type) =>
         type is DynamicType ||
         type is VoidType ||
  -      (type is InterfaceType &&
  -          identical(type.classNode, environment.coreTypes.objectClass));
  +      (type is InterfaceType && identical(type.classNode, objectClass));
   
     /// Given two lists of function type formal parameters, checks that their
     /// bounds are compatible.
  
positive.code:     }
      if (subtype is FunctionType) {
        if (supertype is InterfaceType) {
          return identical(
                  supertype.classNode, environment.coreTypes.functionClass) ||
              identical(supertype.classNode, environment.coreTypes.objectClass);
        } else if (supertype is FunctionType) {
          return _isFunctionSubtypeMatch(subtype, supertype);
        }
  
negative.code:     // above is irrelevant; we just need to find the matched superclass,
      // substitute, and then iterate through type variables.
      var matchingSupertypeOfSubtype =
          getTypeAsInstanceOf(subtype, supertype.classNode);
      if (matchingSupertypeOfSubtype == null) return false;
      for (int i = 0; i < supertype.classNode.typeParameters.length; i++) {
        if (!_isSubtypeMatch(matchingSupertypeOfSubtype.typeArguments[i],
  