protected override IList<BTreeNodeRecord> ReadRecords(byte[] buffer, int offset) { int totalRecords = Descriptor.NumRecords; int nodeSize = Tree.NodeSize; int headerRecordOffset = Utilities.ToUInt16BigEndian(buffer, nodeSize - 2); int userDataRecordOffset = Utilities.ToUInt16BigEndian(buffer, nodeSize - 4); int mapRecordOffset = Utilities.ToUInt16BigEndian(buffer, nodeSize - 6); BTreeNodeRecord[] results = new BTreeNodeRecord[3]; results[0] = new BTreeHeaderRecord(); results[0].ReadFrom(buffer, offset + headerRecordOffset); results[1] = new BTreeGenericRecord(mapRecordOffset - userDataRecordOffset); results[1].ReadFrom(buffer, offset + userDataRecordOffset); results[2] = new BTreeGenericRecord(nodeSize - ((totalRecords * 2) + mapRecordOffset)); results[2].ReadFrom(buffer, offset + mapRecordOffset); return results; }