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); } }