public Task <IImageSourceServiceResult> LoadDrawableAsync(IImageSource imageSource, Android.Widget.ImageView imageView, CancellationToken cancellationToken = default)
        {
            if (imageSource is not ICustomImageSourceStub imageSourceStub)
            {
                return(Task.FromResult <IImageSourceServiceResult>(new ImageSourceServiceLoadResult()));
            }

            var color = imageSourceStub.Color;

            var drawable = _cache.Get(color);

            imageView.SetImageDrawable(drawable);

            var result = new ImageSourceServiceLoadResult(() => _cache.Return(color));

            return(Task.FromResult <IImageSourceServiceResult>(result));
        }
        public Task <IImageSourceServiceResult <UIImage> > GetImageAsync(ICustomImageSourceStub imageSource, float scale = 1, CancellationToken cancellationToken = default)
        {
            var color = imageSource.Color;

            var drawable = _cache.Get(color);

            var result = new ImageSourceServiceResult(drawable, () => _cache.Return(color));

            return(Task.FromResult <IImageSourceServiceResult <UIImage> >(result));
        }