static <A extends JComponent> A awtStepContinuously(A component, Steppable steppable) {
  if (steppable == null) ret component;
  
  new SingleThread thread;
  new BoolVar visible;
  var info = _threadInfo();
  Runnable theLoop = r {
    _threadInheritInfo(info);
    while ping (visible! && steppable.step()) {}
  };
  
  bindToComponent(component,
    -> { visible.set(); thread.go(theLoop); },
    -> visible.clear());

  ret component;
}