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;}
public override int FillFields(byte[] data, int offset, IEscherRecordFactory recordFactory){int bytesRemaining = ReadHeader(data, offset);int pos = offset + 8;int size = 0;field_1_shapeIdMax = LittleEndian.GetInt(data, pos + size); size += 4;int field_2_numIdClusters = LittleEndian.GetInt(data, pos + size); 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 = new FileIdCluster[(bytesRemaining - size) / 8];  for (int i = 0; i < field_5_fileIdClusters.Length; i++){field_5_fileIdClusters[i] = new FileIdCluster(LittleEndian.GetInt(data, pos + size), LittleEndian.GetInt(data, pos + size + 4));maxDgId = Math.Max(maxDgId, field_5_fileIdClusters[i].DrawingGroupId);size += 8;}bytesRemaining -= size;if (bytesRemaining != 0)throw new RecordFormatException("Expecting no remaining data but got " + bytesRemaining + " byte(s).");return 8 + size + bytesRemaining;}