public virtual async Task WRWRTest(string grainStates, int grainCount)
        {
            const int delta = 5;

            List <ITransactionTestGrain> grains =
                Enumerable.Range(0, grainCount)
                .Select(i => RandomTestGrain(grainStates))
                .ToList();

            ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid());

            await coordinator.MultiGrainDoubleByWRWR(grains, delta);

            int expected = delta + delta;

            foreach (var grain in grains)
            {
                int[] actualValues = await grain.Get();

                foreach (var actual in actualValues)
                {
                    if (expected != actual)
                    {
                        this.testOutput($"{grain} - failed");
                    }
                    actual.ShouldBeEquivalentTo(expected);
                }
            }
        }