private static void gatherNames(
     DesignComponent component, DesignComponent excludeComponent, HashSet<String> names) {
   assert component.getDocument().getTransactionManager().isAccess();
   if (component == excludeComponent) return;
   Collection<? extends CodeNamePresenter> presenters =
       component.getPresenters(CodeNamePresenter.class);
   for (CodeNamePresenter presenter : presenters) {
     List<String> reservedNames = presenter.getReservedNames();
     if (reservedNames != null) names.addAll(reservedNames);
   }
   for (DesignComponent child : component.getComponents())
     gatherNames(child, excludeComponent, names);
 }