void IScrollReceiver.ScrollBoundsChanged(ScrollBoundsArgs boundsArgs)
        {
            if (boundsArgs == null) throw new ArgumentNullException("boundsArgs");
            var mode = AutoTail ? ScrollReason.Tail : ScrollReason.User;

            PageSize = boundsArgs.PageSize;
            FirstIndex = boundsArgs.FirstIndex;

            /*
                I need to get rid of this subject as I prefer functional over imperative. 
                However due to complexities int the interactions with the VirtualScrollPanel,
                each time I have tried to remove it all hell has broken loose
            */
            _userScrollRequested.OnNext(new ScrollRequest(mode, boundsArgs.PageSize, boundsArgs.FirstIndex));

        }
 void IScrollReceiver.ScrollBoundsChanged(ScrollBoundsArgs boundsArgs)
 {
     if (boundsArgs == null) throw new ArgumentNullException("boundsArgs");
     if (!_isSettingScrollPosition)
         _userScrollRequested.OnNext(new ScrollRequest(ScrollReason.User, boundsArgs.PageSize, boundsArgs.FirstIndex));
     PageSize = boundsArgs.PageSize;
     FirstIndex = boundsArgs.FirstIndex;
 }