code: def receive_nack(self, msg):
          '''
          Returns a new Prepare message if the number of Nacks received reaches
          a quorum.
          '''
          self.observe_proposal(msg.promised_proposal_id)
  
          if msg.proposal_id == self.proposal_id and self.nacks_received is not None:
              self.nacks_received.add(msg.from_uid)
  
              if len(self.nacks_received) == self.quorum_size:
                  return self.prepare(f receive_nack(self, msg):
          '''
          Returns a new Prepare message if the number of Nacks received reaches
          a quorum.
          '''
          self.observe_proposal(msg.promised_proposal_id)
  
          if msg.proposal_id == self.proposal_id and self.nacks_received is not None:
              self.nacks_received.add(msg.from_uid)
  
              if len(self.nacks_received) == self.quorum_size:
                  return self.prepare()
docs: Returns a new Prepare message if the number of Nacks received reaches
          a quorum.