public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            while (reader.TokenType != JsonToken.StartObject)
            {
                reader.Read();
            }

            reader.Read();

            var op = reader.Value.ToString();

            // reader.Read();
            switch (op)
            {
            case "and":
            case "or":
                reader.Read();
                var combined = new CombinedFilterExpression {
                    Operator = (CombinationOperator)Enum.Parse(typeof(CombinationOperator), char.ToUpper(op[0]) + op.Substring(1))
                };
                var combineitem = ProcessCombinedExpression(combined, reader, serializer);
                return(combineitem);

            default:
                var comparison = new ComparisonFilterExpression {
                    Operator = GetComparison(op)
                };
                var compareitem = ProcessComparisonFilter(comparison, reader, serializer);
                return(compareitem);
            }
        }