anchor.diff:                               node_details:rt_size() |
                                node_details:message_log() |
                                node_details:memory() |
  -                             unknown) -> true.
  -safe_compare(NodeDetails, Tag, ExpValue) ->
  -    case ExpValue of
  -        unknown -> ?equals_w_note(node_details:contains(NodeDetails, Tag), false, atom_to_list(Tag));
  -        _       -> ?equals_w_note(node_details:get(NodeDetails, Tag), ExpValue, atom_to_list(Tag))
  +                             unknown,
  +                   Unknown::[node_details:node_details_name()],
  +                   Known::[node_details:node_details_name()]) -> true.
  +safe_compare(NodeDetails, Tag, ExpValue, Unknown, Known) ->
  +    ValIsUnknown = (ExpValue =:= unknown) andalso
  +                       ((Known =:= [] andalso lists:member(Tag, Unknown)) orelse
  +                        (Unknown =:= [] andalso not lists:member(Tag, Known))),
  +    case ValIsUnknown of
  +        true -> ?equals_w_note(node_details:contains(NodeDetails, Tag), false, atom_to_list(Tag));
  +        _    -> ?equals_w_note(node_details:get(NodeDetails, Tag), ExpValue, atom_to_list(Tag))
       end,
       true.
   
  +%% @doc Compares NodeDetails with the given values. Either Unknown or Known
  +%%      must be non-empty. A value is unknown (and thus not part of the
  +%%      NodeDetails object) if its tag is either in Unknown and Known is emty
  +%%      or if its tag is not in Known and Unknown is empty.
   -spec node_details_equals(NodeDetails::node_details:node_details(),
                             Pred::node:node_type() | unknown,
                             PredList::nodelist:non_empty_snodelist() | unknown,
  
positive.code:     NodeDetails2 = node_details:new(PredList, Node, SuccList, Load, Hostname, RTSize, Memory),
      NodeDetails1_new = node_details:set(NodeDetails1, my_range, MyRangeTest),
      NodeDetails2_new = node_details:set(NodeDetails2, my_range, MyRangeTest),
      node_details_equals(NodeDetails1_new, unknown, unknown, unknown, MyRangeTest, unknown, unknown, unknown, unknown, unknown, unknown, unknown) andalso
      node_details_equals(NodeDetails2_new, hd(PredList), PredList, Node, MyRangeTest, hd(SuccList), SuccList, Load, Hostname, RTSize, unknown, Memory).
  
  -spec test_set_get_succ(Succ::node:node_type()) -> true.
  test_set_get_succ(SuccTest) ->
  
negative.code:     NodeDetails2 = node_details:new(PredList, Node, SuccList, Load, Hostname, RTSize, Memory),
      NodeDetails1_new = node_details:set(NodeDetails1, succlist, SuccListTest),
      NodeDetails2_new = node_details:set(NodeDetails2, succlist, SuccListTest),
      node_details_equals(NodeDetails1_new, unknown, unknown, unknown, unknown, hd(SuccListTest), SuccListTest, unknown, unknown, unknown, unknown, unknown, [], [succ, succlist]),
      node_details_equals(NodeDetails2_new, hd(PredList), PredList, Node, unknown, hd(SuccListTest), SuccListTest, Load, Hostname, RTSize, unknown, Memory, [my_range, message_log], []).
  
  -spec test_set_get_load(Load::node_details:load()) -> true.
  test_set_get_load(LoadTest) ->
  