/// <summary>
        /// Factory method for FormatOptions from OptArgs
        /// </summary>
        public static FormatOptions FromOptArgs(OptArgs args)
        {
            var fmt = new FormatOptions();
            // TODO: find a better way to do this.
            ReqlAst datum;
            var value = args.TryGetValue("time_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum;
            fmt.RawTime = value.Equals("raw");

            value = args.TryGetValue("binary_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum;
            fmt.RawBinary = value.Equals("raw");

            value = args.TryGetValue("group_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum;
            fmt.RawGroups = value.Equals("raw");

            return fmt;
        }
        /// <summary>
        /// Factory method for FormatOptions from OptArgs
        /// </summary>
        public static FormatOptions FromOptArgs(OptArgs args)
        {
            var fmt = new FormatOptions();
            // TODO: find a better way to do this.
            ReqlAst datum;
            var     value = args.TryGetValue("time_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum;

            fmt.RawTime = value.Equals("raw");

            value         = args.TryGetValue("binary_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum;
            fmt.RawBinary = value.Equals("raw");

            value         = args.TryGetValue("group_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum;
            fmt.RawGroups = value.Equals("raw");

            return(fmt);
        }