code: private boolean handleEquinoxRuntimeException(RuntimeException ex) {
  
          Throwable cause = ex.getCause();
          if (cause != null) {
              if (cause instanceof IOException) {
                  // Check common causes for IOExceptions
                  File osgiDir = config.getWorkareaFile(OSGI_DIR_NAME);
                  if (!osgiDir.exists() || !osgiDir.isDirectory() || !osgiDir.canWrite()) {
                      Tr.error(tc, "error.serverDirPermission", osgiDir.getAbsolutePath());
                      return true;
                  }
                  File managerDir = new File(osgiDir, MANAGER_DIR_NAME);
                  if (!managerDir.exists() || !managerDir.isDirectory() || !managerDir.canWrite()) {
                      Tr.error(tc, "error.serverDirPermission", managerDir.getAbsolutePath());
                      return true;
                  }
  
              }
  
          }
          return false;
      }
docs: Attempt to diagnose Equinox exceptions and issue a sane error message rather than a massive equinox stack
  
  @param ex The RuntimeException thrown by Equinox
  @return true if we understand the exception and issued an error message, false otherwise