anchor.diff:        DartType? parameterContextType;
         if (parameter != null) {
           var parameterType = parameter.type;
  +        if (substitution != null) {
  +          parameterType = substitution.substituteType(parameterType);
  +        }
           parameterContextType = _computeContextForArgument(
               resolver, node, parameterType, contextType);
         }
  
positive.code:       required FunctionType? rawType,
        required DartType? contextType,
        required List<WhyNotPromotedGetter> whyNotPromotedList,
        required List<EqualityInfo<PromotableElement, DartType>?>?
            identicalInfo}) {
      assert(whyNotPromotedList.isEmpty);
      var parameters = rawType?.parameters;
      var namedParameters = <String, ParameterElement>{};
  
negative.code:         }
        }
  
        if (rawType != null) {
          substitution =
              Substitution.fromPairs(rawType.typeFormals, typeArgumentTypes);
        }
      } else if (rawType == null || rawType.typeFormals.isEmpty) {
        typeArgumentTypes = const <DartType>[];
      } else {
        rawType = getFreshTypeParameters(rawType.typeFormals)
            .applyToFunctionType(rawType);
  