static BoolVar componentShowingVar(JComponent component) { ret swing(-> { BoolVar flag = new(component.isShowing()); component.addAncestorListener(new AncestorListener { public void ancestorAdded(AncestorEvent event) { if (flag!) print("Warning: bindToComponent logic failure"); flag.set(true); } public void ancestorRemoved(AncestorEvent event) { if (!flag!) print("Warning: bindToComponent logic failure"); flag.set(false); } public void ancestorMoved(AncestorEvent event) { } }); ret flag; }); }