void (final IComponent component, final StringDescriptorVisitor<? super IComponent> visitor) { iterate(component, new ComponentVisitor<>() { @Override public boolean visit(final IComponent component) { for (IProperty prop : component.getModifiedProperties()) { Object value = prop.getPropertyValue(component); if (value instanceof StringDescriptor) { if (!visitor.visit(component, (StringDescriptor)value)) { return false; } } } if (component.getParentContainer() instanceof ITabbedPane) { StringDescriptor tabTitle = ((ITabbedPane)component.getParentContainer()).getTabProperty(component, ITabbedPane.TAB_TITLE_PROPERTY); if (tabTitle != null && !visitor.visit(component, tabTitle)) { return false; } StringDescriptor tabToolTip = ((ITabbedPane)component.getParentContainer()).getTabProperty(component, ITabbedPane.TAB_TOOLTIP_PROPERTY); if (tabToolTip != null && !visitor.visit(component, tabToolTip)) { return false; } } if (component instanceof IContainer) { final StringDescriptor borderTitle = ((IContainer)component).getBorderTitle(); if (borderTitle != null && !visitor.visit(component, borderTitle)) { return false; } } return true; } }); }