JBCefClient (@NotNull CefLifeSpanHandler handler, @NotNull CefBrowser browser) { return myLifeSpanHandler.add(handler, browser, () -> { myCefClient.addLifeSpanHandler(new CefLifeSpanHandler() { @Override public boolean onBeforePopup(CefBrowser browser, CefFrame frame, String target_url, String target_frame_name) { return myLifeSpanHandler.handleBoolean(browser, handler -> { return handler.onBeforePopup(browser, frame, target_url, target_frame_name); }); } @Override public void onAfterCreated(CefBrowser browser) { myLifeSpanHandler.handle(browser, handler -> { handler.onAfterCreated(browser); }); } @Override public void onAfterParentChanged(CefBrowser browser) { myLifeSpanHandler.handle(browser, handler -> { handler.onAfterParentChanged(browser); }); } @Override public boolean doClose(CefBrowser browser) { return myLifeSpanHandler.handleBoolean(browser, handler -> { return handler.doClose(browser); }); } @Override public void onBeforeClose(CefBrowser browser) { myLifeSpanHandler.handle(browser, handler -> { handler.onBeforeClose(browser); }); } }); }); }