code: function box() {
    var args = mlutil.asArray.apply(null, arguments);
    switch(args.length) {
    case 0:
      throw new Error('missing four corners for box');
    case 1:
      if (args[0] instanceof BoxDef) {
        return new BoxRegionDef(args[0]);
      }
      throw new Error('invalid box corners: '+mlutil.identify(args[0], true));
    case 2:
      throw new Error('has two corners but missing two corners for box');
    case 3:
      throw new Error('has three corners but missing one corner for box');
    case 4:
      return new BoxRegionDef(new BoxDef(args[0], args[1], args[2], args[3]));
    default:
      throw new Error('too many arguments for box: '+args.length);
    }
  }
docs: Specifies a rectangular region with the coordinates of the corners.
  The coordinates can be specified either by passing the return value
  from the {@link queryBuilder#southWestNorthEast} function or as a list
  of {queryBuilder.LatLon} coordinates in South, West, North, and East order.
  @method
  @since 1.0
  @memberof queryBuilder#
  @param {queryBuilder.LatLon} south - the south coordinate of the box
  @param {queryBuilder.LatLon} west - the west coordinate for the box
  @param {queryBuilder.LatLon} north - the north coordinate for the box
  @param {queryBuilder.LatLon} east - the east coordinate for the box
  @returns {queryBuilder.Region} the region criteria for a geospatial query