protected virtual void ExecuteScroll(int targetPosition, ScrollToRequestedEventArgs eventArgs)
        {
            if (eventArgs.Position == ScrollToPosition.MakeVisible)
            {
                if (eventArgs.ShouldAnimate)
                {
                    RecyclerView.SmoothScrollToPosition(targetPosition);
                }
                else
                {
                    RecyclerView.ScrollToPosition(targetPosition);
                }
                return;
            }

            if (eventArgs.ShouldAnimate)
            {
                _scroller.SnapPosition   = eventArgs.Position;
                _scroller.TargetPosition = targetPosition;
                LayoutManager.StartSmoothScroll(_scroller);
            }
            else
            {
                LayoutManager.ScrollToPositionWithOffset(targetPosition, CalculateScrollOffset(eventArgs.Position));
            }
        }