docs: public ByteBuffer read(long offset, int length, ByteBuffer block)
            throws IllegalArgumentException, IllegalStateException, IOException {
      if (!this.valid) {
        throw new IllegalStateException("Attempting to read an " +
                "known-to-be invalid piece!");
      }
  
      return this._read(offset, length, block);
    }