code: function(btn, settings) {
              this.$btn = $(btn);
  
              // Is this already a menu button?
              if (this.$btn.data('menubtn')) {
                  // Grab the old MenuBtn's menu container
                  var $menu = this.$btn.data('menubtn').menu.$container;
  
                  Garnish.log('Double-instantiating a menu button on an element');
                  this.$btn.data('menubtn').destroy();
              }
              else {
                  var $menu = this.$btn.next('.menu').detach();
              }
  
              this.$btn.data('menubtn', this);
  
              this.setSettings(settings, Garnish.MenuBtn.defaults);
  
              this.menu = new Garnish.Menu($menu, {
                  anchor: (this.settings.menuAnchor || this.$btn),
                  onOptionSelect: $.proxy(this, 'onOptionSelect')
              });
  
              this.$btn.attr({
                  'tabindex': 0,
                  'role': 'combobox',
                  'aria-owns': this.menu.menuId,
                  'aria-haspopup': 'true',
                  'aria-expanded': 'false'
              });
  
              this.menu.on('hide', $.proxy(this, 'onMenuHide'));
              this.addListener(this.$btn, 'mousedown', 'onMouseDown');
              this.addListener(this.$btn, 'keydown', 'onKeyDown');
              this.addListener(this.$btn, 'blur', 'onBlur');
              this.enable();
          }
docs: Constructor