I may be missing something here, but if isSaveState returns true, I would always expect that some state is persisted which is not the case here.  Specifically (this is just from reading the code...I haven't written a test to verify), it looks like if update is called in the middle of the first page (getPage() == 0), the state would not be persisted since isAtEndOfPage() would return false yet previousStartAfterValues would still be null.