code: public byte[] read(long record, int column) throws IOException {
          // (+ recordSize) allows skipping metadata record
          long pos = record * recordSize + recordSize;
  
          int i = 0;
          for (; i < column; i++) {
              pos += columns[i].size;
          }
          if (pos >= size) {
              final String fmt = "bad seek to position: %d (size is %d)";
              final String msg = format(fmt, pos, size);
              throw new InvalidArgument(msg);
          }
          Column<?> c = columns[i - 1];
  
          raf.seek(pos);
          byte[] ret = new byte[c.size];
          int read = raf.read(ret);
  
          if (read != c.size) {
              final String fmt = "read %d bytes, but expected %d";
              final String msg = format(fmt, read, c.size);
              throw new IOException(msg);
          }
          return ret;
      }
docs: Reads a record for a specific columns from this record file.
  
  @param record The record to read
  @param column The column to read from
  @return {@code byte[]}
  @throws IOException Thrown if an I/O error occurs during I/O seeks or
  read or an invalid number of bytes were read