code: @Override
      public void execute(ExecutorService executor) {
          _startTime.set(System.currentTimeMillis());
          if (_tc.isInfoEnabled()) {
              AppMessageHelper.get(_aii.getHandler()).info("STARTING_APPLICATION", _config.getName());
          }
          long maxWait = ApplicationStateCoordinator.getApplicationStartTimeout();
  
          _slowMessageAction.set(((ScheduledExecutorService) executor).schedule(new Runnable() {
  
              @SuppressWarnings("deprecation")
              @Override
              public void run() {
                  AppMessageHelper.get(_aii.getHandler()).audit("APPLICATION_SLOW_STARTUP", _config.getName(), TimestampUtils.getElapsedTime(_startTime.get()));
              }
          }, maxWait, TimeUnit.SECONDS));
  
          try {
              @SuppressWarnings("rawtypes")
              ApplicationHandler handler = _aii.getHandler();
              @SuppressWarnings("unchecked")
              ApplicationMonitoringInformation ami = handler.setUpApplicationMonitoring(_aii);
              _aii.setApplicationMonitoringInformation(ami);
              _appMonitor.addApplication(_aii);
              @SuppressWarnings("unchecked")
              Future<Boolean> result = handler.install(_aii);
              if (_tc.isDebugEnabled()) {
                  Tr.debug(_tc, "Handler install called, result: " + result);
              }
              _monitor.onCompletion(result, _listener);
          } catch (Throwable t) {
              _listener.failedCompletion(null, t);
          }
      }
docs: {@inheritDoc}