partial void CustomEnd(OverlayStream stream, int finalPos, int offset) { if (stream.Complete) { return; } var startPos = stream.Position; var groupMeta = stream.GetGroup(); if (!groupMeta.IsGroup) { return; } if (groupMeta.GroupType != (int)GroupTypeEnum.TopicChildren) { return; } this._grupData = stream.ReadMemory(checked ((int)groupMeta.TotalLength)); var formKey = FormKey.Factory(_package.MetaData.MasterReferences !, BinaryPrimitives.ReadUInt32LittleEndian(groupMeta.ContainedRecordTypeSpan)); if (formKey != this.FormKey) { throw new ArgumentException("Dialog children group did not match the FormID of the parent."); } var contentSpan = this._grupData.Value.Slice(_package.MetaData.Constants.GroupConstants.HeaderLength); this.Items = BinaryOverlayList <IDialogItemGetter> .FactoryByArray( contentSpan, _package, getter : (s, p) => DialogItemBinaryOverlay.DialogItemFactory(new OverlayStream(s, p), p), locs : ParseRecordLocations( stream: new OverlayStream(contentSpan, _package), trigger: DialogItem_Registration.TriggeringRecordType, constants: GameConstants.Oblivion.MajorConstants, skipHeader: false)); }