<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def silence(self, seq_set: SequenceSet, flag_set: AbstractSet[Flag], flag_op: FlagOp) -> None: """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. """

        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))