public override BoundNode VisitGotoStatement(BoundGotoStatement node)
        {
            BoundExpression caseExpressionOpt  = (BoundExpression)this.Visit(node.CaseExpressionOpt);
            BoundLabel      labelExpressionOpt = (BoundLabel)this.Visit(node.LabelExpressionOpt);
            var             proxyLabel         = _currentAwaitFinallyFrame.ProxyLabelIfNeeded(node.Label);

            return(node.Update(proxyLabel, caseExpressionOpt, labelExpressionOpt));
        }
        public override BoundNode VisitGotoStatement(BoundGotoStatement node)
        {
            BoundExpression caseExpressionOpt  = (BoundExpression)this.Visit(node.CaseExpressionOpt);
            BoundLabel      labelExpressionOpt = (BoundLabel)this.Visit(node.LabelExpressionOpt);
            var             proxyLabel         = _currentFinallyFrame.ProxyLabelIfNeeded(node.Label);

            Debug.Assert(node.Label == proxyLabel || !(F.CurrentFunction is IteratorFinallyMethodSymbol), "should not be proxying branches in finally");
            return(node.Update(proxyLabel, caseExpressionOpt, labelExpressionOpt));
        }
        public override BoundNode VisitGotoStatement(BoundGotoStatement node)
        {
            // we are removing the label expressions from the bound tree because this expression is no longer needed
            // for the emit phase. It is even doing harm to e.g. the stack depth calculation because this expression
            // would not need to be pushed to the stack.
            BoundExpression caseExpressionOpt = null;

            // we are removing the label expressions from the bound tree because this expression is no longer needed
            // for the emit phase. It is even doing harm to e.g. the stack depth calculation because this expression
            // would not need to be pushed to the stack.
            BoundLabel     labelExpressionOpt = null;
            BoundStatement result             = node.Update(node.Label, caseExpressionOpt, labelExpressionOpt);

            if (this.Instrument && !node.WasCompilerGenerated)
            {
                result = _instrumenter.InstrumentGotoStatement(node, result);
            }

            return(result);
        }