void (JComponent component, Set<? super OptionDescription> configurableOptions, String path, boolean i18n) { if (component instanceof SkipSelfSearchComponent) { return; } List<String> additional = ClientProperty.get(component, ADDITIONAL_SEARCH_LABELS_KEY); if (additional != null) { for (String each : additional) { processUILabel(each, configurableOptions, path, i18n); } } final Border border = component.getBorder(); if (border instanceof TitledBorder titledBorder) { final String title = titledBorder.getTitle(); if (title != null) { processUILabel(title, configurableOptions, path, i18n); } } List<String> label = getLabelsFromComponent(component); if (!label.isEmpty()) { for (String each : label) { processUILabel(each, configurableOptions, path, i18n); } } else if (component instanceof JComboBox) { List<String> labels = getItemsFromComboBox((JComboBox<?>)component); for (String each : labels) { processUILabel(each, configurableOptions, path, i18n); } } else if (component instanceof JTabbedPane) { final JTabbedPane tabbedPane = (JTabbedPane)component; final int tabCount = tabbedPane.getTabCount(); for (int i = 0; i < tabCount; i++) { final String title = path != null ? path + '.' + tabbedPane.getTitleAt(i) : tabbedPane.getTitleAt(i); processUILabel(title, configurableOptions, title, i18n); final Component tabComponent = tabbedPane.getComponentAt(i); if (tabComponent instanceof JComponent) { processComponent((JComponent)tabComponent, configurableOptions, title, i18n); } } } else if (component instanceof TabbedPaneWrapper.TabbedPaneHolder) { final TabbedPaneWrapper tabbedPane = ((TabbedPaneWrapper.TabbedPaneHolder)component).getTabbedPaneWrapper(); final int tabCount = tabbedPane.getTabCount(); for (int i = 0; i < tabCount; i++) { String tabTitle = tabbedPane.getTitleAt(i); final String title = path != null ? path + '.' + tabTitle : tabTitle; processUILabel(title, configurableOptions, title, i18n); final JComponent tabComponent = tabbedPane.getComponentAt(i); if (tabComponent != null) { processComponent(tabComponent, configurableOptions, title, i18n); } } } else { final Component[] components = component.getComponents(); if (components != null) { for (Component child : components) { if (child instanceof JComponent) { processComponent((JComponent)child, configurableOptions, path, i18n); } } } } }