IObservable<Unit> SaveThumbnailToMemory (MemoryRequest request)
        {
            return Observable.Create<Unit> (o => {
                var description = request.DescriptionAs<AssetDescription> ();
                var disp = new CancellationDisposable ();
                var token = disp.Token;

                GetAsset (description, token).ContinueWith (t => {
                    using (var asset = t.Result)
                        request.Image = new UIImage (asset.Thumbnail);

                    o.OnCompleted ();
                }, token).RouteExceptions (o);

                return disp;
            });
        }
        IObservable<Unit> SaveFullResolutionImageToMemory (MemoryRequest request)
        {
            return Observable.Create<Unit> (o => {
                var description = request.DescriptionAs<AssetDescription> ();
                var disp = new CancellationDisposable ();
                var token = disp.Token;

                GetAsset (description, token).ContinueWith (t => {
                    using (var asset = t.Result)
                    using (var representation = asset.DefaultRepresentation)
                        request.Image = new UIImage (representation.GetImage ());

                    o.OnCompleted ();
                }, token).RouteExceptions (o);

                return disp;
            });
        }
 void SaveToMemory (CGImage image, MemoryRequest request)
 {
     CheckImageArgument (image, "image");
     request.Image = new UIImage (image);
 }