// Replaces ZipPackage.LoadParts, which is naive and very, very slow, and used every time a package is opened.
        private static bool New_System_IO_Packaging_ZipPackage_LoadParts(System.IO.Packaging.ZipPackage __instance, ref Dictionary <Uri, ZipPackagePart> ___parts)
        {
            ___parts = new Dictionary <Uri, ZipPackagePart>();
            var packageStream = __instance.GetFieldOrPropertyValue <Stream>("PackageStream");

            using (var zipArchive = new ZipArchive(packageStream, ZipArchiveMode.Read, true))
            {
                foreach (var zipArchiveEntry in zipArchive.Entries)
                {
                    // We don't care what Packaging thinks the content type is
                    System_IO_Packaging_ZipPackage_CreatePartCore(__instance,
                                                                  new Uri("/" + zipArchiveEntry.FullName, UriKind.Relative), "application/octet",
                                                                  CompressionOption.Maximum);
                }
            }
            return(false);
        }