docs: function and() {
    var args = mlutil.asArray.apply(null, arguments);
    var queries = [];
    var ordered = null;
    var arg = null;
    for (var i=0; i < args.length; i++) {
      arg = args[i];
      if (ordered === null) {
        if (arg instanceof OrderedDef) {
          ordered        = arg.ordered;
          continue;
        } else if (typeof arg === 'boolean') {
          ordered        = arg;
          continue;
        }
      }
  
      if (arg instanceof Array){
        Array.prototype.push.apply(queries, arg);
      } else {
        queries.push(arg);
      }
    }
  
    return new AndDef(new QueryListDef(queries, ordered, null, null));
  }