public FirebaseOfflineCacheRepo(
            FirebaseClient client,
            string path,
            string key = "",
            StreamingOptions streaming      = StreamingOptions.None,
            InitialPullStrategy initialPull = InitialPullStrategy.Everything)
        {
            // The offline database filename is named after type T.
            // So, if you have more than one list of type T objects, you need to differentiate it
            // by adding a filename modifier; which is what we're using the "key" parameter for.
            _baseQuery  = client.Child(path);
            _realtimeDb = _baseQuery
                          .AsRealtimeDatabase <T>(key, string.Empty, streaming, initialPull, true);

            SyncExceptionThrown = Observable
                                  .FromEventPattern <ExceptionEventArgs>(
                h => _realtimeDb.SyncExceptionThrown += h,
                h => _realtimeDb.SyncExceptionThrown -= h);
        }