anchor.diff:      {ok, Claim} = aens_claim_tx:new(ClaimSpec),
       {apply_txs([Claim], apply_txs([Preclaim], S)), name_id(Hash)}.
   
  -update_pointers(Tag, ToPubkey, Pubkey, NameID, Nonce, S) ->
  -    IdType      = type2id(Tag),
  -    Pointers    = [aens_pointer:new(atom_to_binary(Tag, utf8), aec_id:create(IdType, ToPubkey))],
  +pointers(Tag, ToPubkey) ->
  +    IdType = type2id(Tag),
  +    [aens_pointer:new(atom_to_binary(Tag, utf8), aec_id:create(IdType, ToPubkey))].
  +
  +pointers_with_duplicated_key_at_end(Tag, ToPubkey) ->
  +    [P] = pointers(Tag, ToPubkey),
  +    %% Extract pointer value i.e. identifier, create distinct identifier.
  +    PId = aens_pointer:id(P),
  +    {PTag, PVal} = aec_id:specialize(PId),
  +    <<PValInt:32/unit:8>> = PVal,
  +    ShadowedId = aec_id:create(PTag, <<(1+PValInt):32/unit:8>>),
  +    ?assertNotEqual(PId, ShadowedId), %% Hardcoded expectation on generated identifier being distinct.
  +    ShadowedP = aens_pointer:new(aens_pointer:key(P), ShadowedId),
  +    [P, ShadowedP].
  +
  +update_pointers(Pointers, Pubkey, NameID, Nonce, S) ->
       UpdateSpec  = #{ account_id => account_id(Pubkey)
                      , nonce => Nonce
                      , name_id => NameID
  
positive.code: 
  all() ->
      [ spend_to_name
      , transfer_name_to_named_account
      ].
  
  
  
negative.code:     {ok, Update} = aens_update_tx:new(UpdateSpec),
      apply_txs([Update], S).
  
  update_and_check_pointers(Pointers, Pubkey, NameID, Nonce, S0) ->
      S1 = update_pointers(Pointers, Pubkey, NameID, Nonce, S0),
      N = name_from_id(NameID),
      #{trees := T1} = S1,
      P1 = aens_names:pointers(aens_state_tree:get_name(N, aec_trees:ns(T1))),
      ?assertEqual(Pointers, P1),
      S1.
  
  %% TODO: it'd be nice not to have different atoms for ids and encoding.
  type2id(account_pubkey)  -> account;
  type2id(channel)         -> channel;
  