| Index: pkg/analyzer/lib/src/dart/element/element.dart | 
| diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart | 
| index e3c4ed967a0de4559113ed62602df9f953501576..17a7e99ec39819f3e80201c113cbb58f792e40fc 100644 | 
| --- a/pkg/analyzer/lib/src/dart/element/element.dart | 
| +++ b/pkg/analyzer/lib/src/dart/element/element.dart | 
| @@ -6661,23 +6661,22 @@ class MethodElementImpl extends ExecutableElementImpl implements MethodElement { | 
|  | 
| @override | 
| FunctionType getReifiedType(DartType objectType) { | 
| -    // Collect the covariant parameters. Do this first so we don't allocate | 
| -    // anything in the common case where there are none. | 
| -    Set<String> covariantNames; | 
| +    // Check whether we have any covariant parameters. | 
| +    // Usually we don't, so we can use the same type. | 
| +    bool hasCovariant = false; | 
| for (ParameterElement parameter in parameters) { | 
| if (parameter.isCovariant) { | 
| -        covariantNames ??= new Set(); | 
| -        covariantNames.add(parameter.name); | 
| +        hasCovariant = true; | 
| +        break; | 
| } | 
| } | 
|  | 
| -    if (covariantNames == null) return type; | 
| +    if (!hasCovariant) { | 
| +      return type; | 
| +    } | 
|  | 
| List<ParameterElement> covariantParameters = parameters.map((parameter) { | 
| -      if (!covariantNames.contains(parameter.name)) { | 
| -        return parameter; | 
| -      } | 
| - | 
| +      DartType type = parameter.isCovariant ? objectType : parameter.type; | 
| return new ParameterElementImpl.synthetic( | 
| parameter.name, objectType, parameter.parameterKind); | 
| }).toList(); | 
|  |