code: function MenuItem(id, command) {
          this.id = id;
          this.isDivider = (command === DIVIDER);
          this.isNative = false;
  
          if (!this.isDivider && command !== SUBMENU) {
              // Bind event handlers
              this._enabledChanged = this._enabledChanged.bind(this);
              this._checkedChanged = this._checkedChanged.bind(this);
              this._nameChanged = this._nameChanged.bind(this);
              this._keyBindingAdded = this._keyBindingAdded.bind(this);
              this._keyBindingRemoved = this._keyBindingRemoved.bind(this);
  
              this._command = command;
              this._command
                  .on("enabledStateChange", this._enabledChanged)
                  .on("checkedStateChange", this._checkedChanged)
                  .on("nameChange", this._nameChanged)
                  .on("keyBindingAdded", this._keyBindingAdded)
                  .on("keyBindingRemoved", this._keyBindingRemoved);
          }
      }
docs: MenuItem represents a single menu item that executes a Command or a menu divider. MenuItems
  may have a sub-menu. A MenuItem may correspond to an HTML-based
  menu item or a native menu item if Brackets is running in a native application shell
  
  Since MenuItems may have a native implementation clients should create MenuItems through
  addMenuItem() and should NOT construct a MenuItem object directly.
  Clients should also not access HTML content of a menu directly and instead use
  the MenuItem API to query and modify menus items.
  
  MenuItems are views on to Command objects so modify the underlying Command to modify the
  name, enabled, and checked state of a MenuItem. The MenuItem will update automatically
  
  @constructor
  @private
  
  @param {string} id
  @param {string|Command} command - the Command this MenuItem will reflect.
  Use DIVIDER to specify a menu divider