public MultiSourceSelect(
     Map<QualifiedName, AnalyzedRelation> sources,
     List<OutputName> outputNames,
     QuerySpec querySpec) {
   assert sources.size() > 1 : "MultiSourceSelect requires at least 2 relations";
   this.querySpec = querySpec;
   this.sources = new LinkedHashMap<>(sources.size());
   this.splitter = initSources(sources);
   assert outputNames.size() == querySpec.outputs().size()
       : "size of outputNames and outputSymbols must match";
   fields = new ArrayList<>(outputNames.size());
   for (int i = 0; i < outputNames.size(); i++) {
     fields.add(new Field(this, outputNames.get(i), querySpec.outputs().get(i).valueType()));
   }
 }
 public void normalize(EvaluatingNormalizer normalizer) {
   querySpec.normalize(normalizer);
 }