docs: function geoPath() {
    var args = mlutil.asArray.apply(null, arguments);
    if (args.length < 1) {
      throw new Error('need at least one parameter for geospatial path query');
    }
  
    var location = {};
  
    var seekingPathIndex = true;
    var firstArg = null;
    var arg = null;
    var i=0;
    for (; i < args.length; i++) {
      arg = args[i];
      if (i === 0) {
        if (arg instanceof PathIndexDef) {
          location['path-index'] = arg['path-index'];
          seekingPathIndex = false;
        } else if (arg['path-index'] != null) {
          location['path-index'] = arg['path-index'];
          firstArg = arg.coordSystem;
          if (firstArg != null) {
            location.coordSystem = firstArg;
          }
          seekingPathIndex = false;
          break;
        } else if (typeof arg === 'string' || arg instanceof String) {
          firstArg = arg;
        } else {
          throw new Error('geospatial path without index location');
        }
        continue;
      }
      if (arg instanceof CoordSystemDef) {
        location.coord = arg.coord;
        continue;
      }
      if (seekingPathIndex) {
        seekingPathIndex = false;
        if (typeof arg === 'object' && arg !== null) {
          location['path-index'] = new PathDef(firstArg , arg);
          continue;
        } else {
          location['path-index'] = new PathDef(firstArg);
        }
      }
      throw new Error('geospatial path with unknown argument: '+arg);
    }
    if (seekingPathIndex) {
      location['path-index'] = new PathDef(firstArg);
    }
  
    return {'geo-path': location};
  }