public void AwaitableAwaiterVoid() {
        var n = 0;
        var r = new AnonymousAwaitable(
            () => new AnonymousAwaiter(
                () => { n = 1; return true; },
                a => { n = 2; a(); },
                () => n = 3));

        var x = r.GetAwaiter();
        n.AssertEquals(0);

        x.IsCompleted.AssertIsTrue();
        n.AssertEquals(1);

        x.OnCompleted(() => { });
        n.AssertEquals(2);

        x.GetResult();
        n.AssertEquals(3);
    }
    public void AwaitableAwaiterVoid()
    {
        var n = 0;
        var r = new AnonymousAwaitable(
            () => new AnonymousAwaiter(
                () => { n = 1; return(true); },
                a => { n = 2; a(); },
                () => n = 3));

        var x = r.GetAwaiter();

        n.AssertEquals(0);

        x.IsCompleted.AssertIsTrue();
        n.AssertEquals(1);

        x.OnCompleted(() => { });
        n.AssertEquals(2);

        x.GetResult();
        n.AssertEquals(3);
    }