public override ParserRuleContext VisitPowerExpr([NotNull] StructuredTextParser.PowerExprContext context)
            {
                var unaryExpr = (VisualBasicParser.UnaryExprContext)Visit(context.lhs);

                if (context.rhs == null)
                {
                    return(unaryExpr);
                }

                VisualBasicParser.PowerExprContext powerExpr;
                if (unaryExpr.ChildCount == 1)
                {
                    powerExpr = unaryExpr.rhs;
                }
                else
                {
                    powerExpr = new VisualBasicParser.PowerExprContext(null, 0);
                    AddChild(powerExpr, parent =>
                    {
                        unaryExpr.Parent = parent;
                        return(unaryExpr);
                    });
                }

                foreach (var rhs in context.unaryExpr().Skip(1))
                {
                    powerExpr.AddChild(new CommonToken(VisualBasicParser.HAT, "^"));
                    AddChild(powerExpr, parent =>
                    {
                        _contextStack.Push(parent);
                        var unary = (VisualBasicParser.UnaryExprContext)Visit(rhs);
                        _contextStack.Pop();
                        return(unary);
                    });
                }

                var result = new VisualBasicParser.UnaryExprContext((ParserRuleContext)unaryExpr.Parent, 0);

                result.AddChild(powerExpr);
                powerExpr.Parent = result;
                return(result);
            }
 /// <summary>
 /// Visit a parse tree produced by <see cref="StructuredTextParser.powerExpr"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitPowerExpr([NotNull] StructuredTextParser.PowerExprContext context)
 {
     return(VisitChildren(context));
 }