public void populateFrom(Context sourceContext) {
            // breakdown and detailedDiagnostics has no unset state, so they are always copied
            detailedDiagnostics = sourceContext.detailedDiagnostics;
            breakdown = sourceContext.breakdown;
            if (indexFacts == null)
                indexFacts = sourceContext.indexFacts;
            schemaInfo = sourceContext.schemaInfo;
            if (tokenRegistry == null)
                tokenRegistry = sourceContext.tokenRegistry;
            if (searchChainRegistry == null)
                searchChainRegistry = sourceContext.searchChainRegistry;
            if (rendererRegistry == null)
                rendererRegistry = sourceContext.rendererRegistry;
            if (linguistics == null)
                linguistics = sourceContext.linguistics;
            executor = sourceContext.executor; // executor will always either be the same, or we're in a test
        }
Populate missing values in this from the given context.
Values which are non-null in this will not be overwritten.

@param sourceContext the context from which to get the parameters
container-search/src/main/java/com/yahoo/search/searchchain/Execution.java