docs: @Override
    public void setHierarchy(@Nullable DraweeHierarchy hierarchy) {
      if (FLog.isLoggable(FLog.VERBOSE)) {
        FLog.v(
            TAG,
            "controller %x %s: setHierarchy: %s",
            System.identityHashCode(this),
            mId,
            hierarchy);
      }
      mEventTracker.recordEvent(
          (hierarchy != null) ? Event.ON_SET_HIERARCHY : Event.ON_CLEAR_HIERARCHY);
      // force release in case request was submitted
      if (mIsRequestSubmitted) {
        mDeferredReleaser.cancelDeferredRelease(this);
        release();
      }
      // clear the existing hierarchy
      if (mSettableDraweeHierarchy != null) {
        mSettableDraweeHierarchy.setControllerOverlay(null);
        mSettableDraweeHierarchy = null;
      }
      // set the new hierarchy
      if (hierarchy != null) {
        Preconditions.checkArgument(hierarchy instanceof SettableDraweeHierarchy);
        mSettableDraweeHierarchy = (SettableDraweeHierarchy) hierarchy;
        mSettableDraweeHierarchy.setControllerOverlay(mControllerOverlay);
      }
    }