anchor.diff:  %%% Types
   %%%===================================================================
   
  --record(contract_tree, {}).
  +-type contract_tree() :: aeu_mtrees:tree(aect_contracts:id(), aect_contracts:serialized()).
  +-type call_tree()     :: aeu_mtrees:tree(aect_call:id(), aect_call:serialized()).
  +-type call_trees()    :: gb_trees:tree(aect_contracts:id(), call_tree()).
  +
  +-record(contract_tree, {
  +    contracts = aeu_mtrees:empty() :: contract_tree(),
  +    calls     = gb_trees:empty()   :: call_trees()
  +        %% Keep calls in separate trees to avoid having to serialize/deserialize the
  +        %% entire call history every time we're adding a call.
  +    }).
   
   -opaque tree() :: #contract_tree{}.
   
  
positive.code:     Tree.
  
  -spec root_hash(tree()) -> {ok, aeu_mtrees:root_hash()} | {error, empty}.
  root_hash(#contract_tree{}) ->
      {error, empty}.
  
  
negative.code: 
  -spec empty() -> tree().
  empty() ->
      #contract_tree{}.
  
  -spec insert_contract(aect_contracts:contract(), tree()) -> tree().
  