public override JmesPathArgument Project(JmesPathArgument argument)
        {
            if (argument.IsProjection)
            {
                argument = argument.AsJToken();
            }

            var array = argument.Token as JArray;

            if (array == null)
            {
                return(null);
            }

            var items = new List <JmesPathArgument>();

            foreach (var item in array)
            {
                var result = expression_.Transform(item);
                if (!JmesPathArgument.IsFalse(result))
                {
                    items.Add(item);
                }
            }

            return(new JmesPathArgument(items));
        }
 protected override JmesPathArgument Transform(JToken json)
 {
     return(expression_.Transform(json));
 }
        protected override JmesPathArgument Transform(JToken json)
        {
            var token = left_.Transform(json);

            return(token == JmesPathArgument.Null ? token : right_.Transform(token));
        }