code: def _initialize_payment_statuses(self, chain_state: ChainState):
          
  
          with self.payment_identifier_lock:
              for task in chain_state.payment_mapping.secrethashes_to_task.values():
                  if not isinstance(task, InitiatorTask):
                      continue
  
                  # Every transfer in the transfers_list must have the same target
                  # and payment_identifier, so using the first transfer is
                  # sufficient.
                  initiator = next(iter(task.manager_state.initiator_transfers.values()))
                  transfer = initiator.transfer
                  transfer_description = initiator.transfer_description
                  target = transfer.target
                  identifier = transfer.payment_identifier
                  balance_proof = transfer.balance_proof
                  self.targets_to_identifiers_to_statuses[target][identifier] = PaymentStatus(
                      payment_identifier=identifier,
                      amount=transfer_description.amount,
                      token_network_identifier=TokenNetworkID(
                          balance_proof.token_network_identifier,
                      ),
                      payment_done=AsyncResult(),
                  )
docs: Re-initialize targets_to_identifiers_to_statuses.
  
          Restore the PaymentStatus for any pending payment. This is not tied to
          a specific protocol message but to the lifecycle of a payment, i.e.
          the status is re-created if a payment itself has not completed.