docs: function lsqtQuery() {
    var args = mlutil.asArray.apply(null, arguments);
    var argLen = args.length;
    if (argLen < 1) {
      throw new Error('no temporal collection for lsqt query');
    }
  
    var temporalCollection = null;
    var weight = null;
    var timestamp = null;
    var temporalOptions = null;
    var arg = null;
    for (var i=0; i < args.length; i++) {
      arg = args[i];
      if (i === 0) {
        if (typeof arg !== 'string' && !(arg instanceof String)) {
          throw new Error('first argument for lsqt query must be temporal collection: '+
              mlutil.identify(arg, true));
        }
        temporalCollection = arg;
        continue;
      }
      if (weight === null && arg instanceof WeightDef) {
        weight = arg.weight;
        continue;
      }
      if (timestamp === null) {
        if (typeof arg === 'string' || arg instanceof String){
          timestamp = arg;
          continue;
        } else if (Object.prototype.toString.call(arg) === '[object Date]') {
          timestamp = arg.toISOString();
          continue;
        }
      }
      if (temporalOptions === null && arg instanceof TemporalOptionsDef) {
        temporalOptions = arg['temporal-option'];
        continue;
      }
      throw new Error('unknown argument for lsqt query: '+mlutil.identify(arg, true));
    }
  
    return new LSQTDef(
        new LSQTQueryDef(temporalCollection, weight, timestamp, temporalOptions)
        );
  }