docs: private void submitActivator(ActivatorModel activatorModel) {
          CompletableFuture<Void> future = submit(() -> {
              try {
                  return activatorModel.call();
              } catch (Throwable e) {
                  if (e instanceof IzouPermissionException) {
                      error("Activator: " + activatorModel.getID() + " was denied permission.", e);
  
                      // Return null if permission was denied by a permission module, in this case restart 2 times
                      return null;
                  } else if (e instanceof SecurityException) {
                      error("Activator: " + activatorModel.getID() + " was denied access.", e);
  
                      // Return false if access was denied by the security manager, in this case, do not restart
                      return false;
                  }
                  error("Activator: " + activatorModel.getID() + " crashed", e);
  
                  // Return true if the addOn did not crash because of security reasons, restart 100 times
                  return true;
              }
          }).thenAccept(restart -> {
              if (restart != null && restart.equals(false)) {
                  debug("Activator: " + activatorModel.getID() + " returned false, will not restart");
              } else if (restart == null) {
                  error("Activator: " + activatorModel.getID() + " returned not true");
                  if (permissionDeniedCounter.get(activatorModel).get() < MAX_PERMISSION_DENIED) {
                      error("Until now activator: " + activatorModel.getID() + " was restarted: " +
                              permissionDeniedCounter.get(activatorModel).get() + " times, attempting restart.");
                      permissionDeniedCounter.get(activatorModel).incrementAndGet();
                      submitActivator(activatorModel);
                  } else {
                      error("Activator: " + activatorModel.getID() + " reached permission based restarting limit with " +
                              permissionDeniedCounter.get(activatorModel).get() + " restarts.");
                  }
              } else {
                  if (crashCounter.get(activatorModel).get() < MAX_CRASH) {
                      error("Until now activator: " + activatorModel.getID() + " was restarted: " +
                              crashCounter.get(activatorModel).get() + " times, attempting restart.");
                      crashCounter.get(activatorModel).incrementAndGet();
                      submitActivator(activatorModel);
                  } else {
                      error("Activator: " + activatorModel.getID() + " reached crash based restarting limit with " +
                              crashCounter.get(activatorModel).get() + " restarts.");
                  }
              }
          });
  
          CompletableFuture existing = futures.put(activatorModel, future);
          if (existing != null && !existing.isDone()) existing.cancel(true);
      }