we should maybe override methods like `readVInt()` and check only once rather than X times in the same thread?