anchor.diff:        }
         inferrer.constrainArguments(parameters: params, argumentTypes: argTypes);
         typeArgumentTypes = inferrer.upwardsInfer();
  -      invokeType = rawType.instantiate(typeArgumentTypes);
  -    }
  +    }
  +    FunctionType? invokeType = typeArgumentTypes != null
  +        ? rawType?.instantiate(typeArgumentTypes)
  +        : rawType;
   
       var parameters = _storeResult(node, typeArgumentTypes, invokeType);
       if (parameters != null) {
  
positive.code:         genericMetadataIsEnabled: resolver.genericMetadataIsEnabled,
        );
  
        invokeType = rawType.instantiate(inferrer.downwardsInfer());
      }
  
      List<EqualityInfo<PromotableElement, DartType>?>? identicalInfo =
  
negative.code:       required FunctionType? rawType,
        required DartType? contextType,
        required List<WhyNotPromotedGetter> whyNotPromotedList,
        required List<EqualityInfo<PromotableElement, DartType>?>? identicalInfo,
        Substitution? substitution}) {
      assert(whyNotPromotedList.isEmpty);
      var parameters = rawType?.parameters;
      var namedParameters = <String, ParameterElement>{};
  