docs: @Modified
      @Trivial
      protected void modified(ComponentContext context) throws MalformedObjectNameException {
          Dictionary<String, ?> properties = context.getProperties();
          final boolean trace = TraceComponent.isAnyTracingEnabled();
          if (trace && tc.isEntryEnabled())
              Tr.entry(this, tc, "modified", properties);
  
          // Validate new config before we do anything destructive
          Config newConfig = new Config(properties);
          Config oldConfig = configRef.get();
  
          readyForPollingTask.remove(PollingManager.DS_READY);
  
          Future<?> previousFuture = pollingFutureRef.getAndSet(null);
          if (previousFuture != null)
              previousFuture.cancel(false);
  
          if (oldConfig.enableTaskExecution != newConfig.enableTaskExecution)
              if (newConfig.enableTaskExecution)
                  readyForPollingTask.add(PollingManager.EXECUTION_ENABLED);
              else {
                  readyForPollingTask.remove(PollingManager.EXECUTION_ENABLED);
                  inMemoryTaskIds.clear();
              }
  
          if (oldConfig.initialPollDelay != newConfig.initialPollDelay)
              if (newConfig.initialPollDelay == -1)
                  readyForPollingTask.add(PollingManager.SIGNAL_REQUIRED);
              else if (oldConfig.initialPollDelay == -1)
                  readyForPollingTask.remove(PollingManager.SIGNAL_REQUIRED);
  
          configRef.set(newConfig);
  
          // If the JNDI name changes, notify the application recycle coordinator and re-register the mbean
          if (newConfig.jndiName == null ? oldConfig.jndiName != null : !newConfig.jndiName.equals(oldConfig.jndiName)) {
              if (!applications.isEmpty()) {
                  ApplicationRecycleCoordinator appCoord = (ApplicationRecycleCoordinator) context.locateService(APP_RECYCLE_SERVICE);
                  Set<String> members = new HashSet<String>(applications);
                  applications.removeAll(members);
                  appCoord.recycleApplications(members);
              }
  
              if (mbean != null)
                  mbean.unregister();
  
              mbean = new PersistentExecutorMBeanImpl(this);
              mbean.register(InvokerTask.priv.getBundleContext(context));
          }
  
          if (readyForPollingTask.addAndCheckIfReady(PollingManager.DS_READY))
              startPollingTask(newConfig);
  
          if (trace && tc.isEntryEnabled())
              Tr.exit(this, tc, "modified");
      }