svoid dm_onAnyModulePopupMenu(VF2<JPopupMenu, S> onMenu) {
  DynModule m = dm_current_mandatory();
  dm_vmBus_onMessage showingPopupMenu(voidfunc(JComponent c, JPopupMenu menu) {
    if (!classNameEndsWith(c, 'InternalFrameTitlePane)) ret;
    S module = dm_moduleForFrame(getInternalFrame(c));
    if (module == null) ret;
    temp m.enter();
    callF(onMenu, menu, module);
  });
}

svoid dm_onAnyModulePopupMenu(IVF2<JPopupMenu, S> onMenu) {
  dm_onAnyModulePopupMenu(ivf2ToVF2(onMenu));
}

svoid dm_onAnyModulePopupMenu(IVF3<JPopupMenu, S, Component> onMenu) {
  DynModule m = dm_current_mandatory();
  dm_vmBus_onMessage showingPopupMenu(voidfunc(JComponent c, JPopupMenu menu) {
    if (!classNameEndsWith(c, 'InternalFrameTitlePane)) ret;
    S module = dm_moduleForFrame(getInternalFrame(c));
    if (module == null) ret;
    temp m.enter();
    callF(onMenu, menu, module, c);
  });
}