class BaseEditor {

    protected Promise<Void> makeMenuBar() {
        if (menuItems.contains(SAVE)) {
            menuBuilder.addSave(getOnSave());
        }

        if (menuItems.contains(COPY)) {
            menuBuilder.addCopy(versionRecordManager.getCurrentPath(),
                                getCopyValidator(),
                                getCopyServiceCaller());
        }
        if (menuItems.contains(RENAME)) {
            menuBuilder.addRename(getSaveAndRename());
        }
        if (menuItems.contains(DELETE)) {
            menuBuilder.addDelete(versionRecordManager.getCurrentPath(),
                                  getDeleteServiceCaller());
        }
        if (menuItems.contains(VALIDATE)) {
            menuBuilder.addValidate(getValidateCommand());
        }
        if (menuItems.contains(HISTORY)) {
            menuBuilder.addNewTopLevelMenu(versionRecordManager.buildMenu());
        }
        if (menuItems.contains(DOWNLOAD)) {
            addDownloadMenuItem(menuBuilder);
        }

        return promises.resolve();
    }

      BaseEditor(VersionRecordManager versionRecordManager,
               BaseEditorView baseView,
               BasicFileMenuBuilder menuBuilder,
               Event<ChangeTitleWidgetEvent> changeTitleNotification);
    protected  BaseEditor();
    protected  BaseEditor(final BaseEditorView baseView);

}