private void WriteSave(string savePath, SaveFile saveFile)
        {
            this.General.ExportData(saveFile.SaveGame, out var platform);
            this.Character.ExportData(saveFile.SaveGame);
            this.Vehicle.ExportData(saveFile.SaveGame);
            this.CurrencyOnHand.ExportData(saveFile.SaveGame);
            this.Backpack.ExportData(saveFile.SaveGame, platform);
            this.Bank.ExportData(saveFile.SaveGame, platform);
            this.FastTravel.ExportData(saveFile.SaveGame);

            if (saveFile.SaveGame != null &&
                saveFile.SaveGame.WeaponData != null)
            {
                saveFile.SaveGame.WeaponData.RemoveAll(
                    wd =>
                    Blacklisting.IsBlacklistedType(wd.Type) == true ||
                    Blacklisting.IsBlacklistedBalance(wd.Balance) == true);
            }

            if (saveFile.SaveGame != null &&
                saveFile.SaveGame.ItemData != null)
            {
                saveFile.SaveGame.ItemData.RemoveAll(
                    wd =>
                    Blacklisting.IsBlacklistedType(wd.Type) == true ||
                    Blacklisting.IsBlacklistedBalance(wd.Balance) == true);
            }

            using (var output = File.Create(savePath))
            {
                FileFormats.SaveExpansion.AddExpansionSavedataToUnloadableItemData(
                    saveFile.SaveGame);
                saveFile.Platform = platform;
                saveFile.Serialize(output);
                FileFormats.SaveExpansion
                .ExtractExpansionSavedataFromUnloadableItemData(
                    saveFile.SaveGame);
            }
        }