anchor.diff:  update_tx(#aetx{} = Tx, NewTxI) ->
       Tx#aetx{tx = NewTxI}.
   
  --spec tx_types() -> list(tx_type()).
  -tx_types() ->
  -    [ spend_tx
  -    , oracle_register_tx
  -    , oracle_extend_tx
  -    , oracle_query_tx
  -    , oracle_response_tx
  -    , name_preclaim_tx
  -    , name_claim_tx
  -    , name_transfer_tx
  -    , name_update_tx
  -    , name_revoke_tx
  -    , name_create_tx
  -    , contract_call_tx
  -    , contract_create_tx
  -    , channel_create_tx
  -    , channel_deposit_tx
  -    , channel_withdraw_tx
  -    , channel_force_progress_tx
  -    , channel_close_mutual_tx
  -    , channel_close_solo_tx
  -    , channel_slash_tx
  -    , channel_settle_tx
  -    , channel_snapshot_solo_tx
  -    , channel_offchain_tx
  -    ].
  -
   -ifdef(TEST).
   tx(Tx) ->
       Tx#aetx.tx.
  
positive.code:         , signers/2
          , specialize_type/1
          , specialize_callback/1
          , update_tx/2
          , tx_type/1
          , tx_types/0]).
  
  -ifdef(TEST).
  -export([tx/1]).
  
negative.code: new(Callback, Tx) ->
      Type = Callback:type(),
      #aetx{ type = Type, cb = Callback, tx = Tx }.
  
  -spec fee(Tx :: tx()) -> Fee :: integer().
  fee(#aetx{ cb = CB, tx = Tx }) ->
  