// Constructors

        protected ColumnMappingInspector(CompilableProvider originalProvider)
        {
            rootProvider = originalProvider;

            mappings          = new Dictionary <Provider, List <int> >();
            outerColumnUsages = new Dictionary <ApplyParameter, List <int> >();
            mappingsGatherer  = new TupleAccessGatherer((a, b) => { });

            var outerMappingsGatherer = new TupleAccessGatherer(RegisterOuterMapping);

            outerColumnUsageVisitor = new CompilableProviderVisitor((_, e) => {
                outerMappingsGatherer.Gather(e);
                return(e);
            });
        }