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);
        }
    }
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