void (@NotNull Module module, @NotNull Function<? super ModifiableRootModel, Boolean> modifier) { ModifiableRootModel model = ReadAction.compute(() -> ModuleRootManager.getInstance(module).getModifiableModel()); try { if (modifier.apply(model)) { ApplicationManager.getApplication().invokeAndWait(() -> { if (!module.isDisposed()) { WriteAction.run(model::commit); } }); } } finally { if (!model.isDisposed()) { model.dispose(); } } }