class RemoteConfigComponent {

  @VisibleForTesting
  synchronized ConfigFetchHandler getFetchHandler(
      String namespace, ConfigCacheClient fetchedCacheClient, ConfigMetadataClient metadataClient) {
    return new ConfigFetchHandler(
        firebaseInstallations,
        isPrimaryApp(firebaseApp) ? analyticsConnector : null,
        executorService,
        DEFAULT_CLOCK,
        DEFAULT_RANDOM,
        fetchedCacheClient,
        getFrcBackendApiClient(firebaseApp.getOptions().getApiKey(), namespace, metadataClient),
        metadataClient,
        this.customHeaders);
  }

    RemoteConfigComponent(
      Context context,
      FirebaseApp firebaseApp,
      FirebaseInstallationsApi firebaseInstallations,
      FirebaseABTesting firebaseAbt,
      @Nullable AnalyticsConnector analyticsConnector);
  @VisibleForTesting protected  RemoteConfigComponent(
      Context context,
      ExecutorService executorService,
      FirebaseApp firebaseApp,
      FirebaseInstallationsApi firebaseInstallations,
      FirebaseABTesting firebaseAbt,
      @Nullable AnalyticsConnector analyticsConnector,
      LegacyConfigsHandler legacyConfigsHandler,
      boolean loadGetDefault);

}