code: protected Item doProcessing(Context context, CachingOptions cachingOptions, Item item,
                                  ItemProcessor additionalProcessor) throws ItemProcessingException {
          if (logger.isDebugEnabled()) {
              logger.debug("Doing processing for " + item + "...");
          }
  
          ItemProcessor mainProcessor = processorResolver.getProcessor(item);
          if (mainProcessor != null) {
              if (logger.isDebugEnabled()) {
                  logger.debug("Main processor found for " + item + ": " + mainProcessor);
              }
  
              item = mainProcessor.process(context, cachingOptions, item);
          } else {
              if (logger.isDebugEnabled()) {
                  logger.debug("No main processor was found for " + item);
              }
          }
  
          if (additionalProcessor != null) {
              item = additionalProcessor.process(context, cachingOptions, item);
          }
  
          if (logger.isDebugEnabled()) {
              logger.debug("Processed item: " + item);
              if (item.getDescriptorDom() != null) {
                  logger.debug("Processed descriptor DOM for " + item + ":\n" + XmlUtils.documentToPrettyString(item.getDescriptorDom()));
              }
          }
  
          return item;
      }
docs: Executes processing for the specified {@link Item}:
  <p/>
  <ol>
  <li>Gets the main {@link ItemProcessor} for the item from the {@link ItemProcessorResolver}.</li>
  <li>Calls the main processor's <code>process</code> method to process the item.</li>
  <li>If an additional processor was passed to this method, the additional processor is also called.</li>
  <li>Returns the processed item.</li>
  </ol>