public AggregateRowQuerierBuilder <THistoricalTable> AddArbitraryFilter(FilterDescription <THistoricalTable> filterDescription)
        {
            InnerQBuilder.UseTableBoundFilter <THistoricalTable>()
            .Where(filterDescription);

            ResultQbuilder.UseTableBoundFilter <THistoricalTable>()
            .Where(filterDescription);
            return(this);
        }
        public QBuilder Build()
        {
            FailIfInvalid();
            InnerQBuilder
            .UseSelector()
            .Select <THistoricalTable>(_foreignKeyName)
            .SelectAggregated <THistoricalTable>(_incrementingFieldName, LatestVersion, _aggregationFunction)
            .Then()
            .UseGrouper()
            .GroupBy <THistoricalTable>(_foreignKeyName);

            ResultQbuilder
            .UseSelector()
            .Select <THistoricalTable>("*")
            .Then();

            _doDerivedTableJoin();

            _doDerivedTableJoin = null;
            return(ResultQbuilder);
        }