docs: public static void initialize(
        Context context,
        @Nullable ImagePipelineConfig imagePipelineConfig,
        @Nullable DraweeConfig draweeConfig) {
      if (FrescoSystrace.isTracing()) {
        FrescoSystrace.beginSection("Fresco#initialize");
      }
      if (sIsInitialized) {
        FLog.w(
            TAG,
            "Fresco has already been initialized! `Fresco.initialize(...)` should only be called "
                + "1 single time to avoid memory leaks!");
      } else {
        sIsInitialized = true;
      }
      try {
        if (FrescoSystrace.isTracing()) {
          FrescoSystrace.beginSection("Fresco.initialize->SoLoader.init");
        }
        SoLoader.init(context, 0);
        if (FrescoSystrace.isTracing()) {
          FrescoSystrace.endSection();
        }
      } catch (IOException e) {
        if (FrescoSystrace.isTracing()) {
          FrescoSystrace.endSection();
        }
        throw new RuntimeException("Could not initialize SoLoader", e);
      }
      // we should always use the application context to avoid memory leaks
      context = context.getApplicationContext();
      if (imagePipelineConfig == null) {
        ImagePipelineFactory.initialize(context);
      } else {
        ImagePipelineFactory.initialize(imagePipelineConfig);
      }
      initializeDrawee(context, draweeConfig);
      if (FrescoSystrace.isTracing()) {
        FrescoSystrace.endSection();
      }
    }