For example, `ByteArrayReader.GetInt32` validates the index for four bytes. It then calls `GetByte` four times, which causes a further four validations. One potential solution is to have a non-public `GetByteInternal` method that doesn't validate. Investigate at the same time whether we can have the `GetByte` calls be inlined. Being virtual probably nixes that.