class DefaultMenuItemRenderer extends MenuItemRenderer {
        @Override
        public TerminalPosition getCursorLocation(MenuItem component) {
            return null;
        }

        @Override
        public TerminalSize getPreferredSize(MenuItem component) {<FILL_FUNCTION_BODY>}

        @Override
        public void drawComponent(TextGUIGraphics graphics, MenuItem menuItem) {
            ThemeDefinition themeDefinition = menuItem.getThemeDefinition();
            if (menuItem.isFocused()) {
                graphics.applyThemeStyle(themeDefinition.getSelected());
            }
            else {
                graphics.applyThemeStyle(themeDefinition.getNormal());
            }

            final String label = menuItem.getLabel();
            final String leadingCharacter = label.substring(0, 1);

            graphics.fill(' ');
            graphics.putString(1, 0, label);
            if (menuItem instanceof Menu && !(menuItem.getParent() instanceof MenuBar)) {
                graphics.putString(graphics.getSize().getColumns() - 2, 0, String.valueOf(Symbols.TRIANGLE_RIGHT_POINTING_BLACK));
            }
            if (!label.isEmpty()) {
                if (menuItem.isFocused()) {
                    graphics.applyThemeStyle(themeDefinition.getActive());
                }
                else {
                    graphics.applyThemeStyle(themeDefinition.getPreLight());
                }
                graphics.putString(1, 0, leadingCharacter);
            }
        }
    }

            int preferredWidth = TerminalTextUtils.getColumnWidth(component.getLabel()) + 2;
            if (component instanceof Menu && !(component.getParent() instanceof MenuBar)) {
                preferredWidth += 2;
            }
            return TerminalSize.ONE.withColumns(preferredWidth);
        
<methods>public com.googlecode.lanterna.TerminalPosition getCursorLocation() ,public com.googlecode.lanterna.gui2.InputFilter getInputFilter() ,public InteractableRenderer<com.googlecode.lanterna.gui2.menu.MenuItem> getRenderer() ,public final synchronized com.googlecode.lanterna.gui2.Interactable.Result handleInput(com.googlecode.lanterna.input.KeyStroke) ,public boolean isActivationStroke(com.googlecode.lanterna.input.KeyStroke) ,public boolean isEnabled() ,public boolean isFocusable() ,public boolean isFocused() ,public boolean isKeyboardActivationStroke(com.googlecode.lanterna.input.KeyStroke) ,public boolean isMouseActivationStroke(com.googlecode.lanterna.input.KeyStroke) ,public boolean isMouseDown(com.googlecode.lanterna.input.KeyStroke) ,public boolean isMouseDrag(com.googlecode.lanterna.input.KeyStroke) ,public boolean isMouseMove(com.googlecode.lanterna.input.KeyStroke) ,public boolean isMouseUp(com.googlecode.lanterna.input.KeyStroke) ,public final void onEnterFocus(com.googlecode.lanterna.gui2.Interactable.FocusChangeDirection, com.googlecode.lanterna.gui2.Interactable) ,public final void onLeaveFocus(com.googlecode.lanterna.gui2.Interactable.FocusChangeDirection, com.googlecode.lanterna.gui2.Interactable) ,public synchronized com.googlecode.lanterna.gui2.menu.MenuItem setEnabled(boolean) ,public synchronized com.googlecode.lanterna.gui2.menu.MenuItem setInputFilter(com.googlecode.lanterna.gui2.InputFilter) ,public com.googlecode.lanterna.gui2.menu.MenuItem takeFocus() <variables>private boolean enabled,private boolean inFocus,private com.googlecode.lanterna.gui2.InputFilter inputFilter