text: public int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory) {int bytesRemaining = readHeader( data, offset );int available = data.length - (offset + 8);if (bytesRemaining > available) {bytesRemaining = available;}if (isContainerRecord()) {int bytesWritten = 0;thedata = new byte[0];offset += 8;bytesWritten += 8;while ( bytesRemaining > 0 ) {EscherRecord child = recordFactory.createRecord( data, offset );int childBytesWritten = child.fillFields( data, offset, recordFactory );bytesWritten += childBytesWritten;offset += childBytesWritten;bytesRemaining -= childBytesWritten;getChildRecords().add( child );}return bytesWritten;}if (bytesRemaining < 0) {bytesRemaining = 0;}thedata = IOUtils.safelyAllocate(bytesRemaining, MAX_RECORD_LENGTH);System.arraycopy( data, offset + 8, thedata, 0, bytesRemaining );return bytesRemaining + 8;}