docs: public long readLong() throws IOException {
          long byte1 = file.read();
          long byte2 = file.read();
          long byte3 = file.read();
          long byte4 = file.read();
          long byte5 = file.read();
          long byte6 = file.read();
          long byte7 = file.read();
          long byte8 = file.read();
  
          if (byte8 < 0) {
              throw new EOFException();
          }
  
          return (byte8 << 56) + ((byte7 << 56) >>> 8)
                  + ((byte6 << 56) >>> 16) + ((byte5 << 56) >>> 24)
                  + ((byte4 << 56) >>> 32) + ((byte3 << 56) >>> 40)
                  + ((byte2 << 56) >>> 48) + ((byte1 << 56) >>> 56);
  
      }