/// <summary>
        /// Consume the JSON "null" token
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="throws"></param>
        /// <returns></returns>
        private static JsonParserContext ConsumeNull(
            this JsonParserContext ctx,
            bool throws
            )
        {
            if (ctx.ConsumeWhiteSpace().ConsumeAnyChar("n", throws).IsSucceeded)
            {
                ctx.ConsumeAllChars("ull", true);
                ctx.SetResult(
                    new JValue {
                    BoxedValue = null
                }
                    );
            }

            return(ctx);
        }
        /// <summary>
        /// Consume a JSON boolean token
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="throws"></param>
        /// <returns></returns>
        private static JsonParserContext ConsumeBoolean(
            this JsonParserContext ctx,
            bool throws
            )
        {
            if (ctx.ConsumeWhiteSpace().ConsumeAnyChar("ft", throws).IsSucceeded)
            {
                bool flag = (char)ctx.Result == 't';
                ctx.ConsumeAllChars(flag ? "rue" : "alse", true);
                ctx.SetResult(
                    new JValue {
                    BoxedValue = flag
                }
                    );
            }

            return(ctx);
        }