@Override public Collection<Component> getComponents() { List<Component> out = new ArrayList<>(wrapped.getComponents()); ListIterator<Component> componentListIterator = out.listIterator(); while (componentListIterator.hasNext()) { Component component = componentListIterator.next(); if (!isVisible(component)) { componentListIterator.remove(); } } return out; }