@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;
 }