This is a little confusing, since checkValueRead doesn't scream to me "this will actually do something to the stream" (that was a problem before you got here, too). Maybe something like "readIfPossible(boolean skipDeserialization)"  would be more clear?