public void Save(Stream destinationStream, ProtectionLevel protectionLevel, string password)
        {
            if (!_isLoaded)
            {
                throw new ProjectNotInitializedException();
            }

            using (var ispacArchive = new ZipArchive(destinationStream, ZipArchiveMode.Create))
            {
                var manifest = ispacArchive.CreateEntry("@Project.manifest");
                using (var stream = manifest.Open())
                {
                    _projectManifest.Save(stream, protectionLevel, password);
                }

                var projectParams = ispacArchive.CreateEntry("Project.params");
                using (var stream = projectParams.Open())
                {
                    _projectParams.Save(stream, protectionLevel, password);
                }

                var contentTypes = ispacArchive.CreateEntry("[Content_Types].xml");
                using (var stream = contentTypes.Open())
                {
                    using (var writer = new StreamWriter(stream))
                    {
                        writer.WriteLine(
                            "<?xml version=\"1.0\" encoding=\"utf-8\"?><Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\"><Default Extension=\"dtsx\" ContentType=\"text/xml\" /><Default Extension=\"conmgr\" ContentType=\"text/xml\" /><Default Extension=\"params\" ContentType=\"text/xml\" /><Default Extension=\"manifest\" ContentType=\"text/xml\" /></Types>");
                    }
                }

                foreach (var package in _packages)
                {
                    var name         = PackUriHelper.CreatePartUri(new Uri(package.Key, UriKind.Relative)).OriginalString.Substring(1);
                    var packageEntry = ispacArchive.CreateEntry(name);
                    using (var stream = packageEntry.Open())
                    {
                        package.Value.Save(stream, protectionLevel, password);
                    }
                }

                foreach (var projectConnection in _projectConnections)
                {
                    var name = PackUriHelper.CreatePartUri(new Uri(projectConnection.Key, UriKind.Relative)).OriginalString.Substring(1);
                    var projectConnectionEntry = ispacArchive.CreateEntry(name);
                    using (var stream = projectConnectionEntry.Open())
                    {
                        projectConnection.Value.Save(stream, protectionLevel, password);
                    }
                }
            }
        }