text: public int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory) {int bytesRemaining = readHeader( data, offset );int pos            = offset + 8;int size           = 0;field_1_shapeIdMax     =  LittleEndian.getInt( data, pos + size );size+=4;size+=4;field_3_numShapesSaved =  LittleEndian.getInt( data, pos + size );size+=4;field_4_drawingsSaved  =  LittleEndian.getInt( data, pos + size );size+=4;field_5_fileIdClusters.clear();int numIdClusters = (bytesRemaining-size) / 8;for (int i = 0; i < numIdClusters; i++) {int drawingGroupId = LittleEndian.getInt( data, pos + size );int numShapeIdsUsed = LittleEndian.getInt( data, pos + size + 4 );FileIdCluster fic = new FileIdCluster(drawingGroupId, numShapeIdsUsed);field_5_fileIdClusters.add(fic);maxDgId = Math.max(maxDgId, drawingGroupId);size += 8;}bytesRemaining -= size;if (bytesRemaining != 0) {throw new RecordFormatException("Expecting no remaining data but got " + bytesRemaining + " byte(s).");}return 8 + size;}