/// <summary>
        /// Adds <see cref="PgPrivilegeCommand.Grant"/> and <see cref="PgPrivilegeCommand.Revoke"/> privileges.
        /// </summary>
        public static void Create(StreamWriter writer, [NullGuard.AllowNull] PgSchema oldSchema, PgSchema newSchema, SearchPathHelper searchPathHelper)
        {
            // Add new sequences
            foreach (var privilege in newSchema.Privileges)
            {
                if (oldSchema == null || !oldSchema.ContainsPrivilege(privilege))
                {
                    searchPathHelper.OutputSearchPath(writer);
                    writer.WriteLine();
                    writer.WriteLine(BetaMessage);
                    writer.WriteLine(privilege.Create());
                }
            }

            if (oldSchema == null)
            {
                return;
            }

            // revert privileges
            foreach (var privilege in oldSchema.Privileges)
            {
                if (!newSchema.ContainsPrivilege(privilege))
                {
                    searchPathHelper.OutputSearchPath(writer);
                    writer.WriteLine();
                    writer.WriteLine(BetaMessage);
                    writer.WriteLine(privilege.CreateRevert());
                }
            }
        }