private void maybeUpdateDebugOverlay(@Nullable CloseableImage image) {
    if (!mDrawDebugOverlay) {
      return;
    }

    if (getControllerOverlay() == null) {
      final DebugControllerOverlayDrawable controllerOverlay = new DebugControllerOverlayDrawable();
      ImageLoadingTimeControllerListener overlayImageLoadListener =
          new ImageLoadingTimeControllerListener(controllerOverlay);
      addControllerListener(overlayImageLoadListener);
      setControllerOverlay(controllerOverlay);
    }

    if (getControllerOverlay() instanceof DebugControllerOverlayDrawable) {
      updateDebugOverlay(image, (DebugControllerOverlayDrawable) getControllerOverlay());
    }
  }
Initializes this controller with the new data source supplier, id and caller context. This
allows for reusing of the existing controller instead of instantiating a new one. This method
should be called when the controller is in detached state.

@param dataSourceSupplier data source supplier
@param id unique id for this controller
@param callerContext tag and context for this controller
drawee-backends/drawee-pipeline/src/main/java/com/facebook/drawee/backends/pipeline/PipelineDraweeController.java