class RecyclerViewScrollHandlingDelegate implements ScrollHandlingDelegate {

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

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

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

}