class BackupProvidersManager implements BackupProvider {

    public synchronized void setAndInitializeSyncProvider(@NonNull SyncProvider syncProvider, @Nullable FragmentActivity fragmentActivity) {
        if (syncProviderStore.setSyncProvider(syncProvider)) {
            Logger.info(this, "Initializing new Backup Provider: {}", syncProvider);
            backupProvider.deinitialize();
            backupProvider = syncProviderFactory.get(syncProvider);
            backupProvider.initialize(fragmentActivity);
            for (final BackupProviderChangeListener backupProviderChangeListener : backupProviderChangeListeners) {
                backupProviderChangeListener.onProviderChanged(syncProvider);
            }
        }
    }

    @Inject public  BackupProvidersManager(@NonNull SyncProviderFactory syncProviderFactory,
                                  @NonNull SyncProviderStore syncProviderStore,
                                  @NonNull NetworkManager networkManager);

}