private void Check(string expr, int count)
        {
            var parts = GenericExpressionHelper.Split(expr);

            Assert.AreEqual(expr ?? string.Empty, string.Concat(parts));
            Assert.AreEqual(count, parts.Length);
        }
        private void Check(string expr, params string[] expectedParts)
        {
            var parts = GenericExpressionHelper.Split(expr);

            Assert.AreEqual(expr, string.Concat(parts));

            if (!expectedParts.IsNullOrEmpty())
            {
                Assert.AreEqual(expectedParts.Length, parts.Length);
                foreach (var part in parts.Zip(expectedParts, (p, e) => new { p, e }))
                {
                    Assert.AreEqual(part.e, part.p);
                }
            }
        }
        private void SplitAndAppendParts(string expression)
        {
            var parts = GenericExpressionHelper.Split(expression);

            foreach (var part in parts)
            {
                if (part.StartsWith("'"))
                {
                    AppendStringLiteral(part);
                }
                else if (part.StartsWith("["))
                {
                    AppendSoqlQuery(part);
                }
                else
                {
                    AppendExpressionPart(part);
                }
            }
        }