code: def process_checkpoint(self, msg: Checkpoint, sender: str) -> bool:
          
          self.logger.info('{} processing checkpoint {} from {}'.format(self, msg, sender))
          result, reason = self.validator.validate_checkpoint_msg(msg)
          if result == DISCARD:
              self.discard(msg, "{} discard message {} from {} "
                                "with the reason: {}".format(self, msg, sender, reason),
                           self.logger.trace)
          elif result == PROCESS:
              self._do_process_checkpoint(msg, sender)
          else:
              self.logger.debug("{} stashing checkpoint message {} with "
                                "the reason: {}".format(self, msg, reason))
              self.stasher.stash((msg, sender), result)
              return False
          return True
docs: Process checkpoint messages
  
          :return: whether processed (True) or stashed (False)