docs: function periodRange() {
    var args = mlutil.asArray.apply(null, arguments);
    var argLen = args.length;
  
    var rangeAxis       = null;
    var rangeOperator   = null;
    var rangePeriod     = null;
    var temporalOptions = null;
    var arg = null;
    for (var i=0; i < argLen; i++) {
      arg = args[i];
      if (Array.isArray(arg) && arg.length > 0) {
        if (rangeAxis === null && (typeof arg[0] === 'string' || arg[0] instanceof String)) {
          rangeAxis = arg;
          continue;
        }
        if (rangePeriod === null && arg[0] instanceof PeriodDef) {
          rangePeriod = arg;
          continue;
        }
      }
      if (typeof arg === 'string' || arg instanceof String) {
        if (rangeAxis === null) {
          rangeAxis = [arg];
          continue;
        }
        if (rangeOperator === null) {
          rangeOperator = arg;
          continue;
        }
      }
      if (rangePeriod === null && arg instanceof PeriodDef) {
        rangePeriod = [arg];
        continue;
      }
      if (temporalOptions === null && arg instanceof TemporalOptionsDef) {
        temporalOptions = arg['temporal-option'];
        continue;
      }
      throw new Error('unknown period range argument: '+mlutil.identify(arg, true));
    }
  
    return new PeriodRangeDef(new PeriodRangeQueryDef(
        rangeAxis, rangeOperator, rangePeriod, temporalOptions
    ));
  }