docs: public ReturnCode go() {
          try {
              // obtaining a lock for the server (with timeout)
              serverLock.obtainServerLock();
  
              // IFF we can obtain the server lock....
  
              // Ensure that the server state directory has been cleared prior to start
              clearServerStateDir();
  
              setupJMXOverride();
  
              // Set default to not retry http post requests.  See java bug " JDK-6382788 : URLConnection is silently retrying POST request"
              setHttpRetryPost();
  
              // Only create resources (like the server dir) if the current return code is ok
              setLoggerProperties();
  
              // Create the server running marker file that is automatically deleted when JVM terminates normally
              // If the file already exists, it will force a clean start
              ServerLock.createServerRunningMarkerFile(bootProps);
  
              // Clear workarea if directed via properties or service
              cleanStart();
  
              // Read the bootstrap manifest
              BootstrapManifest bootManifest = null;
              try {
                  bootManifest = BootstrapManifest.readBootstrapManifest(libertyBoot);
              } catch (IOException e) {
                  throw new LaunchException("Could not read the jar manifest", BootstrapConstants.messages.getString("error.unknown.kernel.version"), e);
              }
  
              // Read the bootstrap defaults (kernel, log provider, os extensions)
              BootstrapDefaults bootDefaults = null;
              try {
                  bootDefaults = new BootstrapDefaults(bootProps);
              } catch (IOException e) {
                  throw new LaunchException("Could not read the defaults file", BootstrapConstants.messages.getString("error.unknown.kernel.version"), e);
              }
  
              // handle system packages & system.packages.extra -- MAY THROW if
              // required system.packages list can't be read from the jar
              bootManifest.prepSystemPackages(bootProps);
  
              // Get product version information & retrieve log provider
              String kernelVersion = BootstrapConstants.SERVER_NAME_PREFIX + bootManifest.getBundleVersion();
              String productInfo = getProductInfoDisplayName();
  
              // Find the bootstrap resources we need to launch the nested framework.
              // MAY THROW if these resources can not be found or read
              KernelResolver resolver = new KernelResolver(bootProps.getInstallRoot(), bootProps.getWorkareaFile(KernelResolver.CACHE_FILE), bootDefaults.getKernelDefinition(bootProps), bootDefaults.getLogProviderDefinition(bootProps), bootDefaults.getOSExtensionDefinition(bootProps), libertyBoot);
  
              // ISSUE LAUNCH FEEDBACK TO THE CONSOLE -- we've done the cursory validation at least.
              String logLevel = bootProps.get("com.ibm.ws.logging.console.log.level");
              boolean logVersionInfo = (logLevel == null || !logLevel.equalsIgnoreCase("off"));
              processVersion(bootProps, "info.serverLaunch", kernelVersion, productInfo, logVersionInfo);
              if (logVersionInfo) {
                  // if serial filter agent is loaded, log the information.
                  logSerialFilterMessage();
                  List<String> cmdArgs = bootProps.getCmdArgs();
                  if (cmdArgs != null && !cmdArgs.isEmpty()) {
                      System.out.println("\t" + MessageFormat.format(BootstrapConstants.messages.getString("info.cmdArgs"), cmdArgs));
                  }
              }
              //now we have a resolver we should check if a clean start is being forced
              //if we already cleaned once because of the cmd line arg, osgi prop or service changes
              //then the resolver won't force us to clean again anyway
              if (resolver.getForceCleanStart())
                  KernelUtils.cleanStart(bootProps.getWorkareaFile(null));
  
              //add the service fingerprint
              ServiceFingerprint.putInstallDir(null, bootProps.getInstallRoot());
  
              // Find additional/extra system packages from log providers and os extensions
              String packages = bootProps.get(BootstrapConstants.INITPROP_OSGI_EXTRA_PACKAGE);
              packages = resolver.appendExtraSystemPackages(packages);
  
              // save new "extra" packages
              if (packages != null)
                  bootProps.put(BootstrapConstants.INITPROP_OSGI_EXTRA_PACKAGE, packages);
  
              // Create a new classloader with boot.jars on the classpath
              // Find the framework launcher, and invoke it
              ClassLoader loader;
              List<URL> urlList = new ArrayList<URL>();
  
              // for liberty boot all the jars are already on the classpath
              if (!libertyBoot) {
                  // Add bootstrap jar(s)
                  bootProps.addBootstrapJarURLs(urlList);
                  // Add OSGi framework, log provider, and/or os extension "boot.jar" elements
                  resolver.addBootJars(urlList);
              }
              // Build our new shiny nested classloader
              loader = buildClassLoader(urlList, bootProps.get("verifyJarSignature"));
  
              // Find LauncherDelegate, store the instance where we can find it (for server commands)
              try {
                  Class<? extends LauncherDelegate> clazz = getLauncherDelegateClass(loader);
                  launcherDelegate = clazz.getConstructor(BootstrapConfig.class).newInstance(bootProps);
              } catch (Exception e) {
                  rethrowException("Unable to create OSGi framework due to " + e, e);
              }
  
              delegateCreated.countDown();
  
              // Pass some things along that the delegate in the nested classloader will need
              bootProps.setFrameworkClassloader(loader);
              bootProps.setKernelResolver(resolver);
              bootProps.setInstrumentation(getInstrumentation());
  
              if (!!!Boolean.parseBoolean(bootProps.get(BootstrapConstants.INTERNAL_START_SIMULATION))) {
                  // GO!!! We won't come back from this call until the framework has stopped
                  launcherDelegate.launchFramework();
              }
          } catch (LaunchException le) {
              // This is one of ours, already packaged correctly, just rethrow
              throw le;
          } catch (Throwable e) {
              rethrowException("Caught unexpected exception " + e, e);
          } finally {
              delegateCreated.countDown();
              if (serverLock != null) {
                  serverLock.releaseServerLock();
              }
          }
          return ReturnCode.OK;
      }