public static bool TrySeparateSimplePart(this IEnumerable <Token> tokens, out TokenTuple result)
        {
            result = new TokenTuple();
            var enumerable
                = tokens as Token[] ?? tokens.ToArray();

            switch (enumerable.First().Type)
            {
            case TokenType.SimpleWord:
                result = new TokenTuple(new[] { enumerable.First() }, enumerable.Skip(1));
                return(true);

            case TokenType.EscapingDelimiter:
                if (enumerable.Count() < 2)
                {
                    result = new TokenTuple(new[] { enumerable.First() }, enumerable.Skip(1));
                    return(true);
                }
                else
                {
                    result = new TokenTuple(enumerable.Skip(1).Take(1), enumerable.Skip(2));
                    return(true);
                }
            }
            result = null;
            return(false);
        }
        public static bool TrySeparateStylePart(this IEnumerable <Token> tokens, out TokenTuple tuple)
        {
            tuple = new TokenTuple();
            if (TryCollectTokenToNextDelimiter(tokens, out var collectedTokens))
            {
                tuple = new TokenTuple(collectedTokens, tokens.Skip(collectedTokens.Count()));
                return(true);
            }

            return(false);
        }