code: public byte[] getByteArray(int offset)
     {
        byte[] result = null;
  
        if (offset > 0 && offset < m_data.length)
        {
           int nextBlockOffset = MPPUtility.getInt(m_data, offset);
           offset += 4;
  
           int itemSize = MPPUtility.getInt(m_data, offset);
           offset += 4;
  
           if (itemSize > 0 && itemSize < m_data.length)
           {
              int blockRemainingSize = 28;
  
              if (nextBlockOffset != -1 || itemSize <= blockRemainingSize)
              {
                 int itemRemainingSize = itemSize;
                 result = new byte[itemSize];
                 int resultOffset = 0;
  
                 while (nextBlockOffset != -1)
                 {
                    MPPUtility.getByteArray(m_data, offset, blockRemainingSize, result, resultOffset);
                    resultOffset += blockRemainingSize;
                    offset += blockRemainingSize;
                    itemRemainingSize -= blockRemainingSize;
  
                    if (offset != nextBlockOffset)
                    {
                       offset = nextBlockOffset;
                    }
  
                    nextBlockOffset = MPPUtility.getInt(m_data, offset);
                    offset += 4;
                    blockRemainingSize = 32;
                 }
  
                 MPPUtility.getByteArray(m_data, offset, itemRemainingSize, result, resultOffset);
              }
           }
        }
  
        return (result);
     }
docs: Retrieve a byte array of containing the data starting at the supplied
  offset in the FixDeferFix file. Note that this method will return null
  if the requested data is not found for some reason.
  
  @param offset Offset into the file
  @return Byte array containing the requested data