Why is DataInputStream.read(byte[] b, int off, int len) declared final? Stupid. Stupid. Stupid.