def METHOD_NAME(self, tpc_phase, transaction_id, transaction):
    """
    Undo a transaction identified by transaction_id.
    transaction_id is the base 64 encoding of an 8 byte tid. Undo
    by writing new data that reverses the action taken by the
    transaction.
    """
    # This is called directly from code in DB.py on a new instance
    # (created either by new_instance() or a special
    # undo_instance()). That new instance is never asked to load
    # anything, or poll invalidations, so our storage cache is ineffective
    # (unless we had loaded persistent state files)
    #
    # TODO: Implement 'undo_instance' to make this clear.
    #
    # A regular Connection going through two-phase commit will
    # call tpc_begin(), do a bunch of store() from its commit(),
    # then tpc_vote(), tpc_finish().
    #
    # During undo, we get a tpc_begin(), then a bunch of undo() from
    # ZODB.DB.TransactionalUndo.commit(), then tpc_vote() and tpc_finish().
    tpc_phase.METHOD_NAME(transaction_id, transaction)