anchor.diff:      _EqualityOpContext<Variable, Type> context =
           _stack.removeLast() as _EqualityOpContext<Variable, Type>;
       ExpressionInfo<Variable, Type> lhsInfo = context._conditionInfo;
  +    Variable lhsVariable = context._leftOperandVariable;
       Type leftOperandType = context._leftOperandType;
       ExpressionInfo<Variable, Type> rhsInfo = _getExpressionInfo(rightOperand);
  +    Variable rhsVariable = _getExpressionVariable(rightOperand);
       TypeClassification leftOperandTypeClassification =
           typeOperations.classifyType(leftOperandType);
       TypeClassification rightOperandTypeClassification =
  
positive.code:   @override
    void ifNullExpression_rightBegin(
        Expression leftHandSide, Type leftHandSideType) {
      ExpressionInfo<Variable, Type> lhsInfo = _getExpressionInfo(leftHandSide);
      FlowModel<Variable, Type> promoted;
      _current = _current.split();
      if (lhsInfo is _VariableReadInfo<Variable, Type>) {
        ExpressionInfo<Variable, Type> promotionInfo =
            _current.tryMarkNonNullable(typeOperations, lhsInfo._variable);
        _current = promotionInfo.ifFalse;
        promoted = promotionInfo.ifTrue;
      } else {
  
negative.code:     _current = _current.split();
      _stack.add(new _NullAwareAccessContext<Variable, Type>(_current));
      if (target != null) {
        Variable targetVariable = _getExpressionVariable(target);
        if (targetVariable != null) {
          _current =
              _current.tryMarkNonNullable(typeOperations, targetVariable).ifTrue;
        }
      }
    }
  