/// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="cache"></param>
        public void DeregisterCache(IAircraftOnlineLookupCache cache)
        {
            if (cache == null)
            {
                throw new ArgumentNullException("cache");
            }

            lock (_SyncLock) {
                var newCache = new List <CacheEntry>();
                foreach (var cacheEntry in _CacheEntries)
                {
                    if (!Object.ReferenceEquals(cacheEntry.Cache, cache))
                    {
                        newCache.Add(cacheEntry);
                    }
                }
                _CacheEntries = newCache;
            }
        }
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="cache"></param>
        /// <param name="priority"></param>
        /// <param name="letManagerControlLifetime"></param>
        public void RegisterCache(IAircraftOnlineLookupCache cache, int priority, bool letManagerControlLifetime)
        {
            if (cache == null)
            {
                throw new ArgumentNullException("cache");
            }

            lock (_SyncLock) {
                if (!IsCacheObjectRegistered(cache))
                {
                    var newCache = new List <CacheEntry>(_CacheEntries);
                    newCache.Add(new CacheEntry()
                    {
                        Cache          = cache,
                        Priority       = priority,
                        ManageLifetime = letManagerControlLifetime,
                    });
                    newCache.Sort((lhs, rhs) => rhs.Priority - lhs.Priority);
                    _CacheEntries = newCache;
                }
            }
        }
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="cache"></param>
        /// <returns></returns>
        public bool IsCacheObjectRegistered(IAircraftOnlineLookupCache cache)
        {
            var cacheEntries = _CacheEntries;

            return(cacheEntries.Any(r => Object.ReferenceEquals(cache, r.Cache)));
        }