static <A extends Component> A onBoundsChange(A c, fO r) {
  if (c != null && r != null) swing {
    c.addComponentListener(new ComponentAdapter {
      public void componentResized(ComponentEvent e) { pcallF(r); }
      public void componentMoved(ComponentEvent e) { pcallF(r); }
    });
  }
  ret c;
}

static <A extends Component> A onBoundsChange(O r, A c) {
  ret onBoundsChange(c, r);
}