anchor.diff:      }
       for (var protoConstraint in _protoConstraints) {
         if (protoConstraint.isUpper) {
  -        environment.addUpperBound(
  -            result[protoConstraint.parameter], protoConstraint.bound);
  +        addUpperBound(result[protoConstraint.parameter], protoConstraint.bound);
         } else {
  -        environment.addLowerBound(
  -            result[protoConstraint.parameter], protoConstraint.bound);
  +        addLowerBound(result[protoConstraint.parameter], protoConstraint.bound);
         }
       }
       return result;
  
positive.code:       //   - And `P` is a subtype match for `Q` with respect to `L` under
        //     constraints `C`
        var supertypeArg = supertype.typeArguments[0];
        var supertypeFuture = environment.futureType(supertypeArg);
        return trySubtypeMatch(subtype, supertypeFuture) ||
            _isSubtypeMatch(subtype, supertypeArg);
      }
  
negative.code: 
  import 'package:kernel/ast.dart'
      show
          Class,
          DartType,
          DynamicType,
          FunctionType,
          InterfaceType,
          Member,
          Name,
          NamedType,
          Procedure,
          TypeParameter,
  