public void process(Schema schema, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry,
                        QueryProfiles queryProfiles, boolean validate, boolean documentsOnly,
                        Set<Class<? extends Processor>> processorsToSkip)
    {
        Collection<ProcessorFactory> factories = processors();
        factories.stream()
                .map(factory -> factory.create(schema, deployLogger, rankProfileRegistry, queryProfiles))
                .filter(processor -> ! processorsToSkip.contains(processor.getClass()))
                .forEach(processor -> runProcessor(processor, validate, documentsOnly));
    }
Runs all search processors on the given {@link Schema} object. These will modify the search object, <b>possibly
exchanging it with another</b>, as well as its document types.

@param schema the search to process
@param deployLogger the log to log messages and warnings for application deployment to
@param rankProfileRegistry a {@link com.yahoo.schema.RankProfileRegistry}
@param queryProfiles the query profiles contained in the application this search is part of
@param processorsToSkip a set of processor classes we should not invoke in this. Useful for testing.
config-model/src/main/java/com/yahoo/schema/processing/Processing.java