public static MasterReferenceReader ConstructWriteMasters(IModGetter mod, BinaryWriteParameters param) { MasterReferenceReader ret = new MasterReferenceReader(mod.ModKey); HashSet <ModKey> modKeys = new HashSet <ModKey>(); switch (param.MastersListSync) { case BinaryWriteParameters.MastersListSyncOption.NoCheck: modKeys.Add(mod.MasterReferences.Select(m => m.Master)); break; case BinaryWriteParameters.MastersListSyncOption.Iterate: modKeys.Add( // All FormKeys of links mod.LinkFormKeys.Select(f => f.ModKey) // All FormKeys of records themselves .And(mod.EnumerateMajorRecords().Select(m => m.FormKey.ModKey))); break; default: throw new NotImplementedException(); } modKeys.Remove(mod.ModKey); modKeys.Remove(ModKey.Null); ret.SetTo(modKeys.Select(m => new MasterReference() { Master = m })); return(ret); }