public void Reborn_should_not_call_reborn_on_result_if_task_completed_and_just_return_the_returned_phoenixState()
{
IPhoenixState reborn = Substitute.For<IPhoenixState>();
Func<Task<IPhoenixState>> action = () => Task.FromResult(reborn);
var state = new RaisingPhoenix();
IPhoenixState rebornState;
do
{
rebornState = state.Reborn(action);
} while (object.ReferenceEquals(rebornState, state));
reborn.Received(0).Reborn(Arg.Any<Func<Task<IPhoenixState>>>());
}