private static Filter ContainsAny(Expression left, Expression right)
        {
            Log.WriteLine(string.Format("    -> Left         : {0}", left));
            Log.WriteLine(string.Format("    -> Right        : {0}", right));

            return(new TermsFilter {
                Terms = TermsParser.Parse(left, right, "and")
            });
        }
        private static Filter EnumerableContains(Expression left, Expression right)
        {
            Log.WriteLine(string.Format("    -> Left         : {0}", left));
            Log.WriteLine(string.Format("    -> Right        : {0}", right));

            if (left is MemberExpression)
            {
                return(new TermFilter {
                    Term = TermParser.Parse <object>(left, right)
                });
            }

            if (right is MemberExpression)
            {
                return(new TermsFilter {
                    Terms = TermsParser.Parse(left, right)
                });
            }

            throw new Exception("invalid call to contains");
        }