code: @Override
      public Item process(Context context, CachingOptions cachingOptions, Item item) throws ItemProcessingException {
          if (CollectionUtils.isNotEmpty(processors)) {
              for (ItemProcessor processor : processors) {
                  item = processor.process(context, cachingOptions, item);
              }
          }
  
          return item;
      }
docs: Processes the given {@link Item}, by calling a pipeline of processors. The output of each processor's
  {@link ItemProcessor#process(org.craftercms.core.service.Context, org.craftercms.core.service.CachingOptions,
  Item)} call is passed as input to the next processor.
  
  @return the result of the final processor in the pipeline.
  @throws ItemProcessingException if one of the processors in the pipeline couldn't process the item