code: def _merge_catchup_txns(existing_txns, new_txns):
          
          # TODO: Can we replace this with SortedDict and before merging substract existing transactions from new?
          idx_to_remove = []
          start_seq_no = new_txns[0][0]
          end_seq_no = new_txns[-1][0]
          for seq_no, _ in existing_txns:
              if seq_no < start_seq_no:
                  continue
              if seq_no > end_seq_no:
                  break
              idx_to_remove.append(seq_no - start_seq_no)
          for idx in reversed(idx_to_remove):
              new_txns.pop(idx)
  
          return list(merge(existing_txns, new_txns, key=lambda v: v[0]))
docs: Merge any newly received txns during catchup with already received txns
          :param existing_txns:
          :param new_txns:
          :return: