code: @Override
      protected Item doFindItem(Context context, CachingOptions cachingOptions, String url, ItemProcessor processor)
          throws InvalidContextException, XmlFileParseException, XmlMergeException, ItemProcessingException,
          StoreException {
          // Add a leading slash if not present at the beginning of the url. This is done because although the store
          // adapter normally ignores a leading slash, the merge strategies don't, and they need it to return the
          // correct set of descriptor files to merge (like all the impl of AbstractInheritFromHierarchyMergeStrategy).
          if (!url.startsWith("/")) {
              url = "/" + url;
          }
  
          Item item = context.getStoreAdapter().findItem(context, cachingOptions, url, true);
          if (item != null) {
              // Create a copy of the item, since it will be modified
              item = new Item(item);
              if (item.getDescriptorDom() != null) {
                  item = doMerging(context, cachingOptions, item);
                  item = doProcessing(context, cachingOptions, item, processor);
              } else {
                  item = doProcessing(context, cachingOptions, item, processor);
              }
          }
  
          return item;
      }
docs: Returns the content store item for the given url, returning null if not found.
  <p/>
  <p>After acquiring the item from the {@link ContentStoreAdapter}, the item's descriptor is merged (according
  to its {@link org.craftercms.core.xml.mergers.DescriptorMergeStrategy}) with related descriptors, and the
  final item is then processed.</p>