code: public BlockHeader read(byte[] buffer, int offset, int postHeaderSkipBytes)
     {
        m_offset = offset;
  
        System.arraycopy(buffer, m_offset, m_header, 0, 8);
        m_offset += 8;
  
        int nameLength = FastTrackUtility.getInt(buffer, m_offset);
        m_offset += 4;
  
        if (nameLength < 1 || nameLength > 255)
        {
           throw new UnexpectedStructureException();
        }
  
        m_name = new String(buffer, m_offset, nameLength, CharsetHelper.UTF16LE);
        m_offset += nameLength;
  
        m_columnType = FastTrackUtility.getShort(buffer, m_offset);
        m_offset += 2;
  
        m_flags = FastTrackUtility.getShort(buffer, m_offset);
        m_offset += 2;
  
        m_skip = new byte[postHeaderSkipBytes];
        System.arraycopy(buffer, m_offset, m_skip, 0, postHeaderSkipBytes);
        m_offset += postHeaderSkipBytes;
  
        return this;
     }
docs: Reads the header data from a block.
  
  @param buffer block data
  @param offset current offset into block data
  @param postHeaderSkipBytes bytes to skip after reading the header
  @return current BlockHeader instance