docs: @Override
      public synchronized void start(StartContext context) throws StartException {
          try {
  
              final DeploymentOperations.Factory factory = new DeploymentOperations.Factory() {
                  @Override
                  public DeploymentOperations create() {
                      return new DefaultDeploymentOperations(clientFactoryValue.getValue(), scheduledExecutorValue.getValue());
                  }
              };
  
              //if this is the first start we want to use the same scanner that was used at boot time
              if (scanner == null) {
                  final PathManager pathManager = pathManagerValue.getValue();
                  final String pathName = pathManager.resolveRelativePathEntry(path, relativeTo);
                  File relativePath = null;
                  if (relativeTo != null) {
                      relativePath = new File(pathManager.getPathEntry(relativeTo).resolvePath());
                      callbackHandle = pathManager.registerCallback(pathName, PathManager.ReloadServerCallback.create(), PathManager.Event.UPDATED, PathManager.Event.REMOVED);
                  }
  
                  final FileSystemDeploymentService scanner = new FileSystemDeploymentService(resourceAddress, relativeTo, new File(pathName),
                          relativePath, factory, scheduledExecutorValue.getValue(), controlledProcessStateServiceValue.getValue());
  
                  scanner.setScanInterval(unit.toMillis(interval));
                  scanner.setAutoDeployExplodedContent(autoDeployExploded);
                  scanner.setAutoDeployZippedContent(autoDeployZipped);
                  scanner.setAutoDeployXMLContent(autoDeployXml);
                  scanner.setRuntimeFailureCausesRollback(rollbackOnRuntimeFailure);
                  scanner.setDeploymentTimeout(deploymentTimeout);
                  this.scanner = scanner;
              } else {
                  // The boot-time scanner should use our DeploymentOperations.Factory
                  this.scanner.setDeploymentOperationsFactory(factory);
              }
              notificationRegistryValue.getValue().registerNotificationHandler(ANY_ADDRESS, scanner, DEPLOYMENT_FILTER);
              if (enabled) {
                  scanner.startScanner();
              }
          } catch (Exception e) {
              throw new StartException(e);
          }
      }