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);
        }