/// <summary>
        /// Processes the successful completion of a picture lookup operation on the background thread.
        /// </summary>
        /// <param name="lookupPictureDetail"></param>
        private void ApplyPictureLookup(LookupPictureDetail lookupPictureDetail)
        {
            var fetchedDetail = GetFetchedDetailUnderLock(lookupPictureDetail.Icao);

            if (fetchedDetail != null)
            {
                var detail = fetchedDetail.Detail;
                if (detail != null)
                {
                    var pictureDetail        = lookupPictureDetail.Result;
                    var pictureDetailChanged = false;
                    if (detail.Picture == null)
                    {
                        pictureDetailChanged = pictureDetail != null;
                    }
                    else
                    {
                        pictureDetailChanged = !detail.Picture.Equals(pictureDetail);
                    }

                    if (pictureDetailChanged)
                    {
                        fetchedDetail.Detail.Picture = pictureDetail;
                        OnFetched(new EventArgs <AircraftDetail>(detail));
                    }
                }
            }
        }
        /// <summary>
        /// Called when a picture needs to be fetched.
        /// </summary>
        /// <param name="lookupPictureDetail"></param>
        private void PictureLookupThread_ProcessLookup(LookupPictureDetail lookupPictureDetail)
        {
            var lookupResult = _PictureManager.FindPicture(_PictureFolderCache, lookupPictureDetail.Icao, lookupPictureDetail.Registration, lookupPictureDetail.PictureDetail);

            lock (_PictureLookupResultsSyncLock) {
                lookupPictureDetail.Result = lookupResult;
                _PictureLookupResults.Add(lookupPictureDetail);
            }
        }