docs: private StructuredFileExtension classifyFileExtension() {
      List<String> exts = getFileExtensions();
      Collections.reverse(exts);
      //
      
      List<String> processorRelated = takeWhile(exts, configuration.getProcessorResourceExtensions()::contains);
      
      //e.g. : md -> html mapping is present 
      Optional<String> processorFileExtensionOverride = processorRelated.stream().findFirst().map(configuration.getProcessorExtensionTransformMapping()::get);
      
      List<String> afterProcessorRelated = exts.subList(processorRelated.size(), exts.size());
      
      // if the next token does not match a locale, it's possibly a file extension
      Optional<String> maybeFileExtension = afterProcessorRelated.stream().findFirst().filter(ext -> !configuration.getLocalesAsString().contains(ext));
      
      List<String> afterMaybeFileExtension = afterProcessorRelated.subList(maybeFileExtension.isPresent() ? 1 : 0, afterProcessorRelated.size());
      List<String> locales = takeWhile(afterMaybeFileExtension, (ext -> configuration.getLocalesAsString().contains(ext)));
      List<String> afterLocales = new ArrayList<>(afterMaybeFileExtension.subList(locales.size(), afterMaybeFileExtension.size()));
      Collections.reverse(afterLocales);
      
      return new StructuredFileExtension(processorRelated, processorFileExtensionOverride, maybeFileExtension, new HashSet<>(locales), afterLocales);
    }