text: public int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory) {int bytesRemaining = readHeader( data, offset );int pos = offset + 8;field_1_blipTypeWin32 = data[pos];field_2_blipTypeMacOS = data[pos + 1];System.arraycopy( data, pos + 2, field_3_uid, 0, 16 );field_4_tag = LittleEndian.getShort( data, pos + 18 );field_5_size = LittleEndian.getInt( data, pos + 20 );field_6_ref = LittleEndian.getInt( data, pos + 24 );field_7_offset = LittleEndian.getInt( data, pos + 28 );field_8_usage = data[pos + 32];field_9_name = data[pos + 33];field_10_unused2 = data[pos + 34];field_11_unused3 = data[pos + 35];bytesRemaining -= 36;int bytesRead = 0;if (bytesRemaining > 0) {field_12_blipRecord = (EscherBlipRecord) recordFactory.createRecord( data, pos + 36 );bytesRead = field_12_blipRecord.fillFields( data, pos + 36, recordFactory );}pos += 36 + bytesRead;bytesRemaining -= bytesRead;_remainingData = IOUtils.safelyAllocate(bytesRemaining, MAX_RECORD_LENGTH);System.arraycopy( data, pos, _remainingData, 0, bytesRemaining );return bytesRemaining + 8 + 36 + (field_12_blipRecord == null ? 0 : field_12_blipRecord.getRecordSize()) ;}