anchor.diff:  new(Callback, Tx) ->
       Type = Callback:type(),
       #aetx{ type = Type, cb = Callback, tx = Tx }.
  -
  --spec tx_type(TxOrTxType :: tx_type() | tx()) -> binary().
  -tx_type(#aetx{ type = TxType }) ->
  -    type_to_binary(TxType);
  -tx_type(TxType) when is_atom(TxType) ->
  -    type_to_binary(TxType).
   
   -spec fee(Tx :: tx()) -> Fee :: integer().
   fee(#aetx{ cb = CB, tx = 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: update_tx(#aetx{} = Tx, NewTxI) ->
      Tx#aetx{tx = NewTxI}.
  
  -ifdef(TEST).
  tx(Tx) ->
      Tx#aetx.tx.
  