docs: @Override
      public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull V child, @NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
          super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
          if (dyUnconsumed > 0 && mTotalDyUnconsumed < 0) {
              mTotalDyUnconsumed = 0;
              mScrollDirection = ScrollDirection.SCROLL_DIRECTION_UP;
              onNestedVerticalScrollUnconsumed(coordinatorLayout, child, mScrollDirection, dyConsumed, mTotalDyUnconsumed);
          } else if (dyUnconsumed < 0 && mTotalDyUnconsumed > 0) {
              mTotalDyUnconsumed = 0;
              mScrollDirection = ScrollDirection.SCROLL_DIRECTION_DOWN;
              onNestedVerticalScrollUnconsumed(coordinatorLayout, child, mScrollDirection, dyConsumed, mTotalDyUnconsumed);
          }
          mTotalDyUnconsumed += dyUnconsumed;
  
          if (dyConsumed > 0 && mTotalDyConsumed < 0) {
              mTotalDyConsumed = 0;
              mConsumedScrollDirection = ScrollDirection.SCROLL_DIRECTION_UP;
              onNestedVerticalScrollConsumed(coordinatorLayout, child, mConsumedScrollDirection, dyConsumed, mTotalDyConsumed);
          } else if (dyConsumed < 0 && mTotalDyConsumed > 0) {
              mTotalDyConsumed = 0;
              mConsumedScrollDirection = ScrollDirection.SCROLL_DIRECTION_DOWN;
              onNestedVerticalScrollConsumed(coordinatorLayout, child, mConsumedScrollDirection, dyConsumed, mTotalDyConsumed);
          }
          mTotalDyConsumed += dyConsumed;
      }