// Constructors

            public RootContainerCacheEntry(RootContainerCacheKey key, SortedDictionary <int, ColumnInfo> columns,
                                           List <int> columnsToBeLoaded)
            {
                Key               = key;
                Columns           = columns;
                ColumnsToBeLoaded = columnsToBeLoaded;
            }
        public void GetCachedColumnIndexes(TypeInfo type,
                                           IEnumerable <PrefetchFieldDescriptor> descriptors, out SortedDictionary <int, ColumnInfo> columns,
                                           out List <int> columnsToBeLoaded)
        {
            var cacheKey   = new RootContainerCacheKey(type, descriptors);
            var cacheEntry = columnsCache[cacheKey, true];

            if (cacheEntry == null)
            {
                columns           = PrefetchHelper.GetColumns(ExtractColumns(descriptors), type);
                columnsToBeLoaded = PrefetchHelper.GetColumnsToBeLoaded(columns, type);
                cacheEntry        = new RootContainerCacheEntry(cacheKey, columns, columnsToBeLoaded);
                columnsCache.Add(cacheEntry);
                return;
            }
            columns           = cacheEntry.Columns;
            columnsToBeLoaded = cacheEntry.ColumnsToBeLoaded;
        }