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 asExpression_end(Expression subExpression, Type type) {
      Variable variable = _getExpressionVariable(subExpression);
      if (variable == null) return;
      _current = _current.tryPromoteForTypeCast(typeOperations, variable, type);
    }
  
  
negative.code:     }
    }
  
    FlowModel<Variable, Type> _join(
            FlowModel<Variable, Type> first, FlowModel<Variable, Type> second) =>
        FlowModel.join(typeOperations, first, second, _current._emptyVariableMap);
  