/// <summary> Adds tile data into in memory storage. </summary>
        private string SaveTileDataInMemory(Tile tile, string filePath)
        {
            Trace.Info(TraceCategory, "try to save: {0} from {1}", tile.ToString(), filePath);
            string errorMsg = null;
            CoreLibrary.AddToStore(MapStorageType.InMemory,
                _pathResolver.Resolve(tile.Stylesheet.Path),
                _pathResolver.Resolve(filePath),
                tile.QuadKey,
                error => errorMsg = error);

            return errorMsg;
        }
        /// <summary> Creates <see cref="IObservable{T}"/> for loading element of given tile. </summary>
        private IObservable<Union<Element, Mesh>> CreateLoadSequence(Tile tile)
        {
            return Observable.Create<Union<Element, Mesh>>(observer =>
            {
                Trace.Info(TraceCategory, "loading tile: {0}", tile.ToString());
                var adapter = new MapTileAdapter(tile, observer, Trace);

                CoreLibrary.LoadQuadKey(
                    _pathResolver.Resolve(tile.Stylesheet.Path),
                    tile.QuadKey,
                    adapter.AdaptMesh,
                    adapter.AdaptElement,
                    adapter.AdaptError);

                Trace.Info(TraceCategory, "tile loaded: {0}", tile.ToString());
                observer.OnCompleted();

                return Disposable.Empty;
            });
        }