code: def _remove_ordered_from_queue(self, last_caught_up_3PC=None):
          
          to_remove = []
          for i, msg in enumerate(self.outBox):
              if isinstance(msg, Ordered) and \
                      (not last_caught_up_3PC or
                       compare_3PC_keys((msg.viewNo, msg.ppSeqNo), last_caught_up_3PC) >= 0):
                  to_remove.append(i)
  
          self.logger.trace('{} going to remove {} Ordered messages from outbox'.format(self, len(to_remove)))
  
          # Removing Ordered from queue but returning `Ordered` in order that
          # they should be processed.
          removed = []
          for i in reversed(to_remove):
              removed.insert(0, self.outBox[i])
              del self.outBox[i]
          return removed
docs: Remove any Ordered that the replica might be sending to node which is
          less than or equal to `last_caught_up_3PC` if `last_caught_up_3PC` is
          passed else remove all ordered, needed in catchup