| Index: lib/src/checker/checker.dart
 | 
| diff --git a/lib/src/checker/checker.dart b/lib/src/checker/checker.dart
 | 
| index 024a066ca63de43dfab84015068e927b21c4657c..ef030ec7c7c2fef6a1671d4594fb5f12694cd8a3 100644
 | 
| --- a/lib/src/checker/checker.dart
 | 
| +++ b/lib/src/checker/checker.dart
 | 
| @@ -456,19 +456,21 @@ class CodeChecker extends RecursiveAstVisitor {
 | 
|    }
 | 
|  
 | 
|    // Check invocations
 | 
| -  bool checkArgumentList(ArgumentList node, FunctionType type) {
 | 
| +  bool checkArgumentList(ArgumentList node, DartType type) {
 | 
|      NodeList<Expression> list = node.arguments;
 | 
|      int len = list.length;
 | 
| +    if (len == 0) return true;
 | 
| +    FunctionType ft = type;
 | 
|      for (int i = 0; i < len; ++i) {
 | 
|        Expression arg = list[i];
 | 
|        ParameterElement element = node.getStaticParameterElementFor(arg);
 | 
|        if (element == null) {
 | 
| -        if (type.parameters.length < len) {
 | 
| +        if (ft.parameters.length < len) {
 | 
|            // We found an argument mismatch, the analyzer will report this too,
 | 
|            // so no need to insert an error for this here.
 | 
|            continue;
 | 
|          }
 | 
| -        element = type.parameters[i];
 | 
| +        element = ft.parameters[i];
 | 
|          // TODO(vsm): When can this happen?
 | 
|          assert(element != null);
 | 
|        }
 | 
| @@ -566,7 +568,7 @@ class CodeChecker extends RecursiveAstVisitor {
 | 
|    }
 | 
|  
 | 
|    visitPropertyAccess(PropertyAccess node) {
 | 
| -    if (_rules.isDynamicGet(node.realTarget)) {
 | 
| +    if (_rules.isDynamicGet(node.realTarget, node.propertyName.name)) {
 | 
|        _recordDynamicInvoke(node);
 | 
|      }
 | 
|      node.visitChildren(this);
 | 
| @@ -576,7 +578,8 @@ class CodeChecker extends RecursiveAstVisitor {
 | 
|      final target = node.prefix;
 | 
|      // Check if the prefix is a library - PrefixElement denotes a library
 | 
|      // access.
 | 
| -    if (target.staticElement is! PrefixElement && _rules.isDynamicGet(target)) {
 | 
| +    if (target.staticElement is! PrefixElement &&
 | 
| +        _rules.isDynamicGet(target, node.identifier.name)) {
 | 
|        _recordDynamicInvoke(node);
 | 
|      }
 | 
|      node.visitChildren(this);
 | 
| 
 |