class RecyclerViewScrollHandlingDelegate implements ScrollHandlingDelegate {

  @Override
  public void startListening() {
    if (this.recyclerView != null) {
      this.recyclerView.addOnScrollListener(
          new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
              requireScrollMixin.notifyScrollabilityChange(canScrollDown());
            }
          });

      if (canScrollDown()) {
        requireScrollMixin.notifyScrollabilityChange(true);
      }
    } else {
      Log.w(TAG, "Cannot require scroll. Recycler view is null.");
    }
  }

  public  RecyclerViewScrollHandlingDelegate(
      @NonNull RequireScrollMixin requireScrollMixin, @Nullable RecyclerView recyclerView);

}