### Question:
DefaultModuleManager implements ModuleManager, EventSource { @Override public ModuleInstallationStatusGroup prepare(ModuleInstallationGroup group) { check(); return new DefaultModuleInstallationStatusGroup(group, kernel); } @Inject  DefaultModuleManager(DependencyGraph graph); @Override Module getModule(Coordinate coordinate); @Override ModuleInstallationStatusGroup prepare(ModuleInstallationGroup group); @Override ModuleLifecycleStatusGroup prepare(ModuleLifecycleChangeGroup group); @Override DependencyGraph getDependencyGraph(); @Override ModuleClasspathManager getModuleLoader(); @Override List<Module> getModules(); @Override List<Module> getModules(Lifecycle.State state); @Override void initialize(Kernel kernel); @Override void finalize(Kernel kernel);  }### Answer:
@Test @Disabled void ensureSavingKernelModuleWorks() throws Exception { assertThrows( ClassNotFoundException.class, () -> { Class.forName( "io.sunshower.kernel.ext.scanner.YamlPluginDescriptorScanner", true, kernel.getClassLoader()); fail("should not have been able to create a class"); }, "must not find class"); val module = Tests.relativeToProjectBuild("kernel-modules:sunshower-yaml-reader", "war", "libs"); val req1 = new ModuleInstallationRequest(); req1.setLifecycleActions(ModuleLifecycle.Actions.Install); req1.setLocation(module.toURI().toURL()); val grp = new ModuleInstallationGroup(req1); val prepped = manager.prepare(grp); scheduler.submit(prepped.getProcess()).get(); assertThrows( ClassNotFoundException.class, () -> { Class.forName( "io.sunshower.kernel.ext.scanner.YamlPluginDescriptorScanner", true, kernel.getClassLoader()); }, "still must not be able to find class"); kernel.stop(); kernel.start(); val cl = Class.forName( "io.sunshower.kernel.ext.scanner.YamlPluginDescriptorScanner", true, kernel.getClassLoader()); assertNotNull(cl.getConstructor().newInstance(), "must be able to create"); }