docs: function (...args) {
              var columns = [];
              args.forEach(function makeColumn(c) {
                  if (Array.isArray(c)) {
                      c.forEach(makeColumn);
                  } else if (isFunction(c) && !(c instanceof Identifier)) {
                      var res = c.apply(sql, [sql]);
                      columns = columns.concat(Array.isArray(res) ? res : [res]);
                  } else {
                      columns.push(c);
                  }
              });
              var select = [];
              columns.forEach(function (c) {
                  if (isHash(c)) {
                      for (var i in c) {
                          select.push(new AliasedExpression(this.stringToIdentifier(i), c[i]));
                      }
                  } else if (isString(c)) {
                      select.push(this.stringToIdentifier(c));
                  } else {
                      select.push(c);
                  }
              }, this);
              return this.mergeOptions({select: select});
  
          }