code: function Menu(options) {
    options = options || {};
    this.document = options.document || document;
    this.type = options.type;
  
    // FF can be really hard to debug if doc is null, so we check early on
    if (!this.document) {
      throw new Error('No document');
    }
  
    this.element =  util.createElement(this.document, 'div');
    this.element.classList.add(options.menuClass || 'gcli-menu');
    if (options && options.field) {
      this.element.classList.add(options.menuFieldClass || 'gcli-menu-field');
    }
  
    // Pull the HTML into the DOM, but don't add it to the document
    if (menuCss != null) {
      util.importCss(menuCss, this.document, 'gcli-menu');
    }
  
    this.template = util.toDom(this.document, menuHtml);
    this.templateOptions = { blankNullUndefined: true, stack: 'menu.html' };
  
    // Contains the items that should be displayed
    this.items = null;
  
    this.onItemClick = util.createEvent('Menu.onItemClick');
  }
docs: Menu is a display of the commands that are possible given the state of a
  requisition.
  @param options A way to customize the menu display. Valid options are:
  - field: [boolean] Turns the menu display into a drop-down for use inside a
  JavascriptField.
  - document: The document to use in creating widgets
  - menuClass: Custom class name when generating the top level element
  which allows different layout systems
  - type: The version of SelectionType that we're picking an option from