anchor.diff:      }
       _postDominatedLocals.removeReferenceFromAllScopes(node.leftHandSide);
       var leftType = node.leftHandSide.accept(this);
  -    var conditionalNode = _lastConditionalNode;
  -    _lastConditionalNode = null;
       var expressionType = _handleAssignment(node.rightHandSide, leftType);
  -    if (_isConditionalExpression(node.leftHandSide)) {
  +    var conditionalNode = _conditionalNodes[node.leftHandSide];
  +    if (conditionalNode != null) {
         expressionType = expressionType.withNode(
             NullabilityNode.forLUB(conditionalNode, expressionType.node));
         _variables.recordDecoratedExpressionType(node, expressionType);
  
positive.code:   /// edges on a best-effort basis.
    final _postDominatedLocals = _ScopedLocalSet();
  
    NullabilityNode _lastConditionalNode;
  
    EdgeBuilder(TypeProvider typeProvider, this._typeSystem, this._variables,
        this._graph, this._source, this.listener)
  
negative.code:     // TODO(paulberry): substitute if necessary
      if (propertyName.inSetterContext()) {
        if (isConditional) {
          _conditionalNodes[node] = targetType.node;
        }
        return calleeType.positionalParameters[0];
      } else {
  