anchor.diff:                      Any ->
                           ct:pal("Failed: Stacktrace ~p~n",
                                  [erlang:get_stacktrace()]),
  -                        ?ct_fail("~p evaluated to \"~p\" which is "
  -                               "not the expected ~p~n"
  -                               "(~p)",
  +                        ?ct_fail("~s evaluated to \"~w\" which is "
  +                               "not the expected ~s~n"
  +                               "(~w)",
                                  [??Actual, Any, ??ExpectedPattern, lists:flatten(Note)])
                   end
           end()).
  
positive.code: %% expect_message_ignore(MsgPattern, IgnoredMessage) ->
  %%     receive
  %%         IgnoredMessage ->
  %%             ct:pal("ignored ~p", [IgnoredMessage]),
  %%             expect_message_ignore(MsgPattern, IgnoredMessage);
  %%         MsgPattern ->
  %%             ok
  
negative.code:                 % ignore two ignored messages, then wait for Timeout ignoring all ignored messages and do a final receive with the expected message
                  receive
                      IgnoredMessage ->
                          ct:pal("ignored \"~w\"", [IgnoredMessage]),
                          receive
                              IgnoredMessage ->
                                  ct:pal("ignored \"~w\"", [IgnoredMessage]),
                                  ?consume_message(IgnoredMessage, Timeout),
                                  receive
                                      IgnoredMessage ->
                                          ct:pal("ignored \"~w\" for the last time", [IgnoredMessage]),
                                      MsgPattern -> ok
                                  after
                                      0 ->
  