// runnable takes an argument static A onLeftClick(final A c, fO runnable) { swing { c.addMouseListener(leftClickMouseAdapter(runnable)); } ret c; } // runnable takes no args static TrayIcon onLeftClick(final TrayIcon c, final O runnable) { swing { c.addMouseListener(leftClickMouseAdapter_noPt(runnable)); } ret c; }