code: def silence(self, seq_set: SequenceSet, flag_set: AbstractSet[Flag],
                  flag_op: FlagOp) -> None:
          
          session_flags = self.session_flags
          permanent_flag_set = self.permanent_flags & flag_set
          session_flag_set = session_flags & flag_set
          for seq, msg in self._messages.get_all(seq_set):
              msg_flags = msg.permanent_flags
              msg_sflags = session_flags.get(msg.uid)
              updated_flags = flag_op.apply(msg_flags, permanent_flag_set)
              updated_sflags = flag_op.apply(msg_sflags, session_flag_set)
              if msg_flags != updated_flags:
                  self._silenced_flags.add((msg.uid, updated_flags))
              if msg_sflags != updated_sflags:
                  self._silenced_sflags.add((msg.uid, updated_sflags))
docs: Runs the flags update against the cached flags, to prevent untagged
          FETCH responses unless other updates have occurred.
  
          For example, if a session adds ``\\Deleted`` and calls this method,
          the FETCH response will be silenced. But if another added ``\\Seen``
          at the same time, the FETCH response will be sent.
  
          Args:
              seq_set: The sequence set of messages.
              flag_set: The set of flags for the update operation.
              flag_op: The mode to change the flags.