anchor.diff:                  % 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 ~p", [IgnoredMessage]),
  +                        ct:pal("ignored \"~p\"", [IgnoredMessage]),
                           receive
                               IgnoredMessage ->
  -                                ct:pal("ignored ~p", [IgnoredMessage]),
  +                                ct:pal("ignored \"~p\"", [IgnoredMessage]),
                                   consume_message(IgnoredMessage, Timeout),
                                   receive
                                       IgnoredMessage ->
  -                                        ct:pal("ignored ~p for the last time", [IgnoredMessage]),
  +                                        ct:pal("ignored \"~p\" for the last time", [IgnoredMessage]),
                                       MsgPattern -> ok
                                   after
                                       0 ->
  
positive.code:                     Any ->
                          ct:pal("Failed: Stacktrace ~p~n",
                                 [erlang:get_stacktrace()]),
                          ct:fail(lists:flatten(
                              io_lib:format("~p evaluated to ~p which is "
                                            "not the expected ~p",
                                            [??Actual, Any, ??ExpectedPattern])))
                  end
          end()).
  
  
negative.code:         fun() ->
                  receive
                      ActualMessage ->
                          ct_fail("expected no message but got \"~p\"", [ActualMessage])
                  after
                      Timeout -> ok
                  end
  