public SpeciesIdentityResult GetMostLikelyIdentity(Image sourceImage, GeographyPoint coordinates, Boolean geoContextMode, Boolean multisample)
        {
            var formattedSourceImage = ImageConversion.ConvertTo24BitColorBitmap(sourceImage);

            ValidateImage(formattedSourceImage);
            var candidates        = new ConcurrentBag <SpeciesIdentityResult>();
            var imageRectangle    = new Rectangle(0, 0, formattedSourceImage.Width, formattedSourceImage.Height);
            var cropAreas         = GetCrops(imageRectangle, multisample);
            var sourceImageClones = new ConcurrentStack <Bitmap>(cropAreas.Select(cropArea => (Bitmap)formattedSourceImage.Clone()).ToList());

            Parallel.ForEach(cropAreas, cropArea =>
            {
                Bitmap imageClone;
                if (sourceImageClones.TryPop(out imageClone))
                {
                    var speciesInfo = GetTopCandidateSpeciesInfoForImage(imageClone, coordinates, geoContextMode, cropArea);
                    var candidate   = SpeciesIdentityResult.GetInstance(imageClone, cropArea, speciesInfo);
                    candidates.Add(candidate);
                }
            });

            var candidatesList = candidates.ToList();

            if (!multisample)
            {
                return(candidatesList.FirstOrDefault() ?? SpeciesIdentityResult.NULL);
            }
            var metaFilterFactory = new MetaFilterFactory();
            var metaFilters       = metaFilterFactory.GetOrderedFilters();

            candidatesList = metaFilters.Aggregate(candidatesList,
                                                   (current, metaFilter) => metaFilter.Filter(current));
            return(candidatesList.FirstOrDefault() ?? SpeciesIdentityResult.NULL);
        }