anchor.diff:        ContractKeyF, ChangeContractFun,
         InsertContractF,
         Contract).
  +
  +check_poi_for_a_contract_among_others(Contract, OtherContracts) ->
  +    ContractKeyF = fun(C) -> aect_contracts:id(C) end,
  +    InsertContractF =
  +        fun(Ts, C) ->
  +                Cs = aec_trees:contracts(Ts),
  +                aec_trees:set_contracts(
  +                  Ts, aect_state_tree:insert_contract(C, Cs))
  +        end,
  +
  +    check_poi_for_an_object_among_others(
  +      contracts,
  +      ContractKeyF,
  +      InsertContractF,
  +      Contract, OtherContracts).
   
   check_poi_for_one_object(SubTree,
                            ObjKeyFun, ChangeObjFun,
  
positive.code:     ObjKey = ObjKeyFun(Obj1), %% Hardcoded expectation on function changing object.
      ?assertMatch({error, _},
                   aec_trees:verify_poi(SubTree, ObjKey, Obj1, Poi11)),
      ok.
  
  make_contract(Owner) ->
  
negative.code:     %% order dependent.  The serialized version is canonical, though.
      ?assertEqual(?TEST_MODULE:serialize_poi(PoIExpect),
                   ?TEST_MODULE:serialize_poi(PoIExpr)).
  
  assert_not_equal_poi(PoIExpect, PoIExpr) ->
      %% The deserialized poi contains a gb_tree, so it is operation
      %% order dependent.  The serialized version is canonical, though.
      ?assertNotEqual(?TEST_MODULE:serialize_poi(PoIExpect),
                      ?TEST_MODULE:serialize_poi(PoIExpr)).
  
  check_poi_for_one_contract(Contract, ChangeContractFun) ->
      ContractKeyF = fun(C) -> aect_contracts:id(C) end,
  