// Ничего не возвращает, просто инициализирует _declaringVariable и _declaringVariableInitializerExpression
        public override object VisitVariableDeclarator([NotNull] DoshikParser.VariableDeclaratorContext context)
        {
            _compilationContext.SetParsingAntlrContext(context);

            _declaringVariable.Name = context.variableName.Text;

            // ToDo: Тут надо искать переменную не везде а только в текущем scope плюс в родительях, исключая все что выше определения метода.
            // то есть переменную заданную в параметрах переопределить нельзя, НО должно быть возможно переопределить переменную, заданную в "текущем классе"(то есть глобальную). Ее потом надо сделать чтобы
            // можно было вызывать по this.variable
            if (_currentScope.FindVariableByName(_declaringVariable.Name) != null)
            {
                throw _compilationContext.ThrowCompilationError($"variable { _declaringVariable.Name } is already defined");
            }

            var variableInitializerCtx = context.variableInitializer();

            // если != null значит инициализтор задан
            if (variableInitializerCtx != null)
            {
                // продолжаем изменять _declaringVariable
                _declaringVariableInitializerExpression = (ExpressionTree)Visit(variableInitializerCtx);
            }
            else
            {
                // иначе это просто объявление переменной без инициализации

                _declaringVariableInitializerExpression = null;
            }

            return(null);
        }
        // возвращает (string variableName, DoshikParser.VariableInitializerContext variableInitializer)
        public override object VisitVariableDeclarator([NotNull] DoshikParser.VariableDeclaratorContext context)
        {
            _compilationContext.SetParsingAntlrContext(context);

            var variableName        = context.variableName.Text;
            var variableInitializer = context.variableInitializer();

            return(variableName, variableInitializer);
        }