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)
        {
            var token = base.Transform(json);

            return(JmesPathArgument.IsFalse(token)
                ? JmesPathArgument.True
                : JmesPathArgument.False
                   );
        }
        protected override JmesPathArgument Transform(JToken json)
        {
            var token = Left.Transform(json);

            return(!JmesPathArgument.IsFalse(token) ? token : Right.Transform(json));
        }