| Index: pkg/analyzer/lib/src/generated/resolver.dart
 | 
| diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
 | 
| index 37eaddc0202612b8a4c5803a211c7d5e1e415deb..b221f9ffb3ab9d4004f5d0fc08f51845b8b13a4e 100644
 | 
| --- a/pkg/analyzer/lib/src/generated/resolver.dart
 | 
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart
 | 
| @@ -9013,9 +9013,7 @@ class ResolverVisitor extends ScopedVisitor {
 | 
|            typeProvider.listType.substitute4([typeProvider.dynamicType]);
 | 
|        targs = inferenceContext.matchTypes(listD, contextType);
 | 
|      }
 | 
| -    if (targs != null &&
 | 
| -        targs.length == 1 &&
 | 
| -        !targs[0].isDynamic) {
 | 
| +    if (targs != null && targs.length == 1 && !targs[0].isDynamic) {
 | 
|        DartType eType = targs[0];
 | 
|        InterfaceType listT = typeProvider.listType.substitute4([eType]);
 | 
|        for (Expression child in node.elements) {
 | 
| @@ -9040,9 +9038,7 @@ class ResolverVisitor extends ScopedVisitor {
 | 
|            .substitute4([typeProvider.dynamicType, typeProvider.dynamicType]);
 | 
|        targs = inferenceContext.matchTypes(mapD, contextType);
 | 
|      }
 | 
| -    if (targs != null &&
 | 
| -        targs.length == 2 &&
 | 
| -        targs.any((t) => !t.isDynamic)) {
 | 
| +    if (targs != null && targs.length == 2 && targs.any((t) => !t.isDynamic)) {
 | 
|        DartType kType = targs[0];
 | 
|        DartType vType = targs[1];
 | 
|        InterfaceType mapT = typeProvider.mapType.substitute4([kType, vType]);
 | 
| @@ -9082,8 +9078,16 @@ class ResolverVisitor extends ScopedVisitor {
 | 
|      node.accept(elementResolver);
 | 
|      _inferFunctionExpressionsParametersTypes(node.argumentList);
 | 
|      Element methodElement = node.methodName.staticElement;
 | 
| -    if (methodElement is ExecutableElement) {
 | 
| -      InferenceContext.setType(node.argumentList, methodElement.type);
 | 
| +    DartType contextType = null;
 | 
| +    if (methodElement is PropertyAccessorElement && methodElement.isGetter) {
 | 
| +      contextType = methodElement.returnType;
 | 
| +    } else if (methodElement is VariableElement) {
 | 
| +      contextType = methodElement.type;
 | 
| +    } else if (methodElement is ExecutableElement) {
 | 
| +      contextType = methodElement.type;
 | 
| +    }
 | 
| +    if (contextType is FunctionType) {
 | 
| +      InferenceContext.setType(node.argumentList, contextType);
 | 
|      }
 | 
|      safelyVisit(node.argumentList);
 | 
|      node.accept(typeAnalyzer);
 | 
| 
 |