docs: function geoElement() {
    var args = mlutil.asArray.apply(null, arguments);
    var argLen = args.length;
    if (argLen < 1) {
      throw new Error('need at least one parameter for geospatial element query');
    }
  
    var location = {};
  
  // TODO: elementName
    var maxIndex = Math.min(argLen, 2);
    var elemName = null;
    var arg = null;
    var i=0;
    while (i < maxIndex) {
      arg = args[i];
      if (arg instanceof QNameDef) {
      } else if (typeof arg === 'string' || arg instanceof String) {
        arg = new QNameDef(null, arg);
      } else if (arg instanceof ElementDef) {
        arg = arg.element;
      } else {
        break;
      }
      if (elemName !== null) {
        location.parent = elemName;
      }
      elemName = arg;
      i++;
    }
    if (elemName === null) {
      throw new Error('element name required for geospatial location: '+mlutil.identify(args, true));
    }
    location.element = elemName;
    elemName = null;
  
    return {'geo-elem': location};
  }