public static T Max <QueryType, QueryOp, T>(this QueryWrapper <QueryType, QueryOp> wrapper, Func <QueryType, T> selector)
     where T : IComparable <T>
     where QueryOp : IQueryOp <QueryType>
 {
     return(wrapper.Select(selector).Fold((a, b) => a.CompareTo(b) > 0 ? a : b));
 }
 public static QueryWrapper <long, SelectOp <QueryType, long, QueryOp> > ToLongs <QueryType, QueryOp>(this QueryWrapper <QueryType, QueryOp> wrapper)
     where QueryOp : IQueryOp <QueryType>
     where QueryType : IConvertible
 {
     return(wrapper.Select(FormatHelper <QueryType> .toLong));
 }
 public static QueryWrapper <float, SelectOp <QueryType, float, QueryOp> > ToFloats <QueryType, QueryOp>(this QueryWrapper <QueryType, QueryOp> wrapper)
     where QueryOp : IQueryOp <QueryType>
     where QueryType : IConvertible
 {
     return(wrapper.Select(FormatHelper <QueryType> .toFloat));
 }
 public static QueryWrapper <byte, SelectOp <QueryType, byte, QueryOp> > ToBytes <QueryType, QueryOp>(this QueryWrapper <QueryType, QueryOp> wrapper)
     where QueryOp : IQueryOp <QueryType>
     where QueryType : IConvertible
 {
     return(wrapper.Select(FormatHelper <QueryType> .toByte));
 }