docs: public void setComposition(@NonNull LottieComposition composition) {
      if (L.DBG) {
        Log.v(TAG, "Set Composition \n" + composition);
      }
      lottieDrawable.setCallback(this);
  
      this.composition = composition;
      boolean isNewComposition = lottieDrawable.setComposition(composition);
      enableOrDisableHardwareLayer();
      if (getDrawable() == lottieDrawable && !isNewComposition) {
        // We can avoid re-setting the drawable, and invalidating the view, since the composition
        // hasn't changed.
        return;
      }
  
      // If you set a different composition on the view, the bounds will not update unless
      // the drawable is different than the original.
      setImageDrawable(null);
      setImageDrawable(lottieDrawable);
  
      requestLayout();
  
      for (LottieOnCompositionLoadedListener lottieOnCompositionLoadedListener : lottieOnCompositionLoadedListeners) {
          lottieOnCompositionLoadedListener.onCompositionLoaded(composition);
      }
  
    }