public Builder addSourceForProvider(ComponentId sourceId, ComponentId providerId, ComponentId searchChainId,
                                            boolean isDefaultProviderForSource, FederationOptions federationOptions,
                                            List<String> schemas) {
            var searchChainInvocationSpec = new SearchChainInvocationSpec(searchChainId, sourceId, providerId, federationOptions, schemas);

            SourcesTarget sourcesTarget = getOrRegisterSourceTarget(sourceId);
            sourcesTarget.addSource(providerId, searchChainInvocationSpec, isDefaultProviderForSource);

            registerTarget(new SingleTarget(searchChainId, searchChainInvocationSpec, true));
            return this;
        }
Resolves (source, provider) component specifications to a search chain invocation spec.
The provider component specification is given by the entry in the queryMap with key
'source.&lt;source-name&gt;.provider'.

<p>
The diagram shows the relationship between source, provider and the result:
(source is used to select row, provider is used to select column.)
Provider id = null is used for regular search chains.
</p>

<pre>
                  Provider id
                null
               |----+---+---+---|
               | o  |   |   |   |
               |----+---+---+---|
Source id      |    | o | o |   |
               |----+---+---+---|
               |    |   |   | o |
               |----+---+---+---|

                   o: SearchChainInvocationSpec
</pre>

@author Tony Vaagenes
container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java