public bool TryInjestToken(IToken token)
        {
            switch (token.GetType().Name)
            {
            case nameof(DeclarationToken):
                if (!_started)
                {
                    _started = true;
                    return(true);
                }
                return(false);

            case nameof(SeparatorToken):
                return(true);

            case nameof(EndLineToken):
                Finish();
                return(true);

            case nameof(IteratorToken):
                if (_currentStatement != null && !_currentStatement.Finished)
                {
                    _currentStatement.Finish();
                }
                return(false);

            default:
                if (_started && !Finished)
                {
                    return(TryInjectToken(token));
                }
                return(false);
            }
        }