thank you very much for your detailed explanations!
Thank you for your interest! :)
Concerning this I would like to know if the following expression should pass or raise a WrongMessageSelector failure:
[:mock | mock message1; message2] should strictly satisfy:
[:mock | mock message2 useArbitrarily. mock message1.].
This should pass.
#useArbitrarily here
specifies
that #message2 can be recieved "anywhere" (zero or several times). And it
also means that the message invocation does not depend on the kind of
specification (strict or lenient etc.).
The idea of #useArbitrarily here is to stress the fact, that though invokation of #message2 is expected, it's not the
essence of the spec. But #message1 actually is. And we give some freedom for the sequense of sends in implementation.