code: def persist_header_chain(self,
                               headers: Iterable[BlockHeader]
                               ) -> Tuple[Tuple[BlockHeader, ...], Tuple[BlockHeader, ...]]:
          
          with self.db.atomic_batch() as db:
              return self._persist_header_chain(db, headers)
docs: Return two iterable of headers, the first containing the new canonical headers,
          the second containing the old canonical headers