anchor.diff:        var iterableType = iterable.staticType;
         if (iterableType is! InterfaceType ||
             iterableType.element != typeProvider.listElement) {
  -        _coverageMarker();
           return;
         }
       }
       // body should be Block
       if (forEachStatement.body is! Block) {
  -      _coverageMarker();
         return;
       }
       Block body = forEachStatement.body;
  
positive.code:     }
      // prepare !()
      if (node is! PrefixExpression) {
        _coverageMarker();
        return;
      }
      var prefExpression = node as PrefixExpression;
      // should be ! operator
      if (prefExpression.operator.type != TokenType.BANG) {
        _coverageMarker();
        return;
      }
      // prepare !()
      var operand = prefExpression.operand;
      if (operand is! ParenthesizedExpression) {
        _coverageMarker();
        return;
      }
      var parExpression = operand as ParenthesizedExpression;
      operand = parExpression.expression;
      // prepare "is"
      if (operand is! IsExpression) {
        _coverageMarker();
        return;
      }
      var isExpression = operand as IsExpression;
      if (isExpression.notOperator != null) {
        _coverageMarker();
        return;
      }
  
  
negative.code:     // find FieldDeclaration
      var fieldDeclaration = node.thisOrAncestorOfType<FieldDeclaration>();
      if (fieldDeclaration == null) {
        return;
      }
      // not interesting for static
      if (fieldDeclaration.isStatic) {
        return;
      }
      // has a parse error
      var variableList = fieldDeclaration.fields;
      if (variableList.keyword == null && variableList.type == null) {
        return;
      }
      // not interesting for final
      if (variableList.isFinal) {
        return;
      }
      // should have exactly one field
      List<VariableDeclaration> fields = variableList.variables;
      if (fields.length != 1) {
        return;
      }
      var field = fields.first;
  