-// public void startX(BundleContext bc) {
-// uuidFactory = new NoOpUuidFactory();
-//
-// List<String> locations = new ArrayList<>();
-// for (Bundle bundle : bc.getBundles()) {
-// locations.add(bundle.getLocation());
-//// System.out.println(bundle.getLocation());
-// }
-//
-// CmsState cmsState = (CmsState) bc.getService(bc.getServiceReference("org.argeo.api.cms.CmsState"));
-// System.out.println(cmsState.getDeployProperties(CmsDeployProperty.HTTP_PORT.getProperty()));
-// System.out.println(cmsState.getUuid());
-//
-// ExecutionControlProvider executionControlProvider = new ExecutionControlProvider() {
-// @Override
-// public String name() {
-// return "name";
-// }
-//
-// @Override
-// public ExecutionControl generate(ExecutionEnv ee, Map<String, String> map) throws Throwable {
-// return new LocalExecutionControl(new WrappingLoaderDelegate(loader));
-//// Thread.currentThread().setContextClassLoader(loader);
-//// return new DirectExecutionControl();
-// }
-// };
-//
-//// Thread.currentThread().setContextClassLoader(loader);
-//
-// try (JShell js = JShell.builder().executionEngine(executionControlProvider, null).build()) {
-// js.addToClasspath("/home/mbaudier/dev/git/unstable/output/a2/org.argeo.cms/org.argeo.api.cms.2.3.jar");
-// js.addToClasspath("/home/mbaudier/dev/git/unstable/output/a2/org.argeo.cms/org.argeo.cms.2.3.jar");
-// js.addToClasspath(
-// "/home/mbaudier/dev/git/unstable/output/a2/osgi/equinox/org.argeo.tp.osgi/org.eclipse.osgi.3.18.jar");
-//// do {
-// System.out.print("Enter some Java code: ");
-// // String input = console.readLine();
-// String imports = """
-// import org.argeo.api.cms.*;
-// import org.argeo.cms.*;
-// import org.argeo.slc.jshell.*;
-// """;
-// js.eval(imports);
-// String input = """
-// var bc = org.osgi.framework.FrameworkUtil.getBundle(org.argeo.cms.CmsDeployProperty.class).getBundleContext();
-// var cmsState =(org.argeo.api.cms.CmsState) bc.getService(bc.getServiceReference("org.argeo.api.cms.CmsState"));
-// System.out.println(cmsState.getDeployProperties(org.argeo.cms.CmsDeployProperty.HTTP_PORT.getProperty()));
-// cmsState.getUuid();
-// """;
-//// if (input == null) {
-//// break;
-//// }
-//
-// input.lines().forEach((l) -> {
-//
-// List<SnippetEvent> events = js.eval(l);
-// for (SnippetEvent e : events) {
-// StringBuilder sb = new StringBuilder();
-// if (e.causeSnippet() == null) {
-// // We have a snippet creation event
-// switch (e.status()) {
-// case VALID:
-// sb.append("Successful ");
-// break;
-// case RECOVERABLE_DEFINED:
-// sb.append("With unresolved references ");
-// break;
-// case RECOVERABLE_NOT_DEFINED:
-// sb.append("Possibly reparable, failed ");
-// break;
-// case REJECTED:
-// sb.append("Failed ");
-// break;
-// }
-// if (e.previousStatus() == Status.NONEXISTENT) {
-// sb.append("addition");
-// } else {
-// sb.append("modification");
-// }
-// sb.append(" of ");
-// sb.append(e.snippet().source());
-// System.out.println(sb);
-// if (e.value() != null) {
-// System.out.printf("Value is: %s\n", e.value());
-// }
-// System.out.flush();
-// }
-// }
-// });
-//// } while (true);
-// }
-// }