code: public <T extends ThreadPoolTaskExecutor> T configure(T taskExecutor) {
  		PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
  		map.from(this.queueCapacity).to(taskExecutor::setQueueCapacity);
  		map.from(this.corePoolSize).to(taskExecutor::setCorePoolSize);
  		map.from(this.maxPoolSize).to(taskExecutor::setMaxPoolSize);
  		map.from(this.keepAlive).asInt(Duration::getSeconds)
  				.to(taskExecutor::setKeepAliveSeconds);
  		map.from(this.allowCoreThreadTimeOut).to(taskExecutor::setAllowCoreThreadTimeOut);
  		map.from(this.awaitTermination)
  				.to(taskExecutor::setWaitForTasksToCompleteOnShutdown);
  		map.from(this.awaitTerminationPeriod).asInt(Duration::getSeconds)
  				.to(taskExecutor::setAwaitTerminationSeconds);
  		map.from(this.threadNamePrefix).whenHasText()
  				.to(taskExecutor::setThreadNamePrefix);
  		map.from(this.taskDecorator).to(taskExecutor::setTaskDecorator);
  		if (!CollectionUtils.isEmpty(this.customizers)) {
  			this.customizers.forEach((customizer) -> customizer.customize(taskExecutor));
  		}
  		return taskExecutor;
  	}
docs: Configure the provided {@link ThreadPoolTaskExecutor} instance using this builder.
  @param <T> the type of task executor
  @param taskExecutor the {@link ThreadPoolTaskExecutor} to configure
  @return the task executor instance
  @see #build()
  @see #build(Class)