anchor.diff:    }
   
     @override
  +  DartType visitAsExpression(AsExpression node) {
  +    if (childNode == node.type) {
  +      return node.expression.staticType;
  +    }
  +    return null;
  +  }
  +
  +  @override
     DartType visitAssertInitializer(AssertInitializer node) {
       if (childNode == node.condition) {
         return typeProvider.boolType;
  
positive.code:   }
  
    @override
    DartType visitVariableDeclaration(VariableDeclaration node) {
      if (childNode == node.initializer) {
        var parent = node.parent;
  
negative.code:   @override
    DartType visitAssignmentExpression(AssignmentExpression node) {
      if (childNode == node.rightHandSide) {
        if (node.operator.type == TokenType.EQ) {
          return node.leftHandSide.staticType;
        }
        var method = node.staticElement;
        if (method != null) {
          var parameters = method.parameters;
          if (parameters != null && parameters.isNotEmpty) {
            return parameters[0].type;
          }
        }
      }
      return null;
    }
  