Since ByteBuffer maintains its own limit, we don't really need to have the length restriction on our own read() methods
Support for long lengths throughout the annotation API (fine for anything except String)
Missed removing a TODO
If a file is over MAX_VALUE, don't use the memory mapped implementation because Java can't map it