code: function period() {
    var startDate = null;
    var endDate   = null;
  
    switch(arguments.length) {
    case 0:
      throw new Error('period must have at least the start datetime');
    case 1:
      startDate = arguments[0];
      break;
    case 2:
      startDate = arguments[0];
      endDate   = arguments[1];
      break;
    default:
      throw new Error('period with too many arguments: '+arguments.join(', '));
    }
  
    return new PeriodDef(startDate, endDate);
  }
docs: The specification for a timespan or timestamp for an query
  returned by the {@link queryBuilder#period} function.
  @typedef {object} queryBuilder.PeriodParam
  @since 1.0
   
  Specifies a timespan or timestamp for comparison with
  a valid or system timespan in temporal documents in
  a {@link queryBuilder#periodRange} temporal query.
  @method
  @since 1.0
  @memberof queryBuilder#
  @param {string|Date} startTimestamp - the starting datetime for a timespan
  or the datetime for a timestamp
  @param {string|Date} [endTimestamp] - the starting datetime for a timespan
  or the datetime for a timestamp
  @returns {queryBuilder.PeriodParam} the specification of a period
  for a {@link queryBuilder#periodRange} temporal query