Extension (@NotNull Icon defaultIcon, @NotNull Icon hoveredIcon, @NlsContexts.Tooltip String tooltip, Runnable action) { return new Extension() { @Override public Icon getIcon(boolean hovered) { return hovered ? hoveredIcon : defaultIcon; } @Override public String getTooltip() { return tooltip; } @Override public Runnable getActionOnClick() { return action; } }; }