anchor.diff:        : this._typeSystem = typeSystem ?? new Dart2TypeSystem(null);
   
     @override
  +  void visitAssignmentExpression(AssignmentExpression node) {
  +    TokenType operatorType = node.operator.type;
  +    if (operatorType == TokenType.QUESTION_QUESTION_EQ) {
  +      _checkForDeadNullCoalesce(
  +          node.leftHandSide.staticType, node.rightHandSide);
  +    }
  +    super.visitAssignmentExpression(node);
  +  }
  +
  +  @override
     void visitBinaryExpression(BinaryExpression node) {
       Token operator = node.operator;
       bool isAmpAmp = operator.type == TokenType.AMPERSAND_AMPERSAND;
  
positive.code:       _checkForDeadNullCoalesce(node.leftOperand.staticType, node.rightOperand);
      }
      super.visitBinaryExpression(node);
    }
  
    @override
    void visitAssignmentExpression(AssignmentExpression node) {
      TokenType operatorType = node.operator.type;
      if (operatorType == TokenType.QUESTION_QUESTION_EQ) {
        _checkForDeadNullCoalesce(
            node.leftHandSide.staticType, node.rightHandSide);
      }
      super.visitAssignmentExpression(node);
    }
  
    void _checkForDeadNullCoalesce(TypeImpl lhsType, Expression rhs) {
      if (lhsType.nullability == Nullability.nonNullable) {
        _errorReporter.reportErrorForNode(HintCode.DEAD_CODE, rhs, []);
      }
    }
  
    /// For each block, this method reports and error on all statements between
  
negative.code: import 'package:analyzer/src/generated/type_system.dart';
  import 'package:analyzer/src/lint/linter.dart';
  import 'package:analyzer/src/workspace/workspace.dart';
  import 'package:meta/meta.dart';
  import 'package:path/path.dart' as path;
  
  export 'package:analyzer/src/dart/constant/constant_verifier.dart';
  