public void test_recursive_trigger()
    {
        var count          = 0;
        var doneHandlerRun = false;
        var instance       = new StreamedCollection();

        instance.AddEventHandler <TestEvent>((ep) =>
        {
            if (ep.id == 2)
            {
                doneHandlerRun = true;
            }
            else
            {
                ep.Api.Keep <TestEvent>();
            }
        });

        instance.AddEventHandler <TestEvent>((ep) =>
        {
            if (ep.id == 1)
            {
                count += 1;
                if (count < 3)
                {
                    ep.Api.Keep <TestEvent>();
                    ep.Api.Trigger(new TestEvent()
                    {
                        id = 1
                    });
                }
                else
                {
                    ep.Api.Trigger(new TestEvent()
                    {
                        id = 2
                    });
                }
            }
        });

        instance.Trigger(new TestEvent()
        {
            id = 1
        });
        Assert(doneHandlerRun);
    }
    public void test_recursive_trigger()
    {
        var count = 0;
        var doneHandlerRun = false;
        var instance = new StreamedCollection();

        instance.AddEventHandler<TestEvent>((ep) =>
        {
            if (ep.id == 2)
            {
                doneHandlerRun = true;
            }
            else
            {
                ep.Api.Keep<TestEvent>();
            }
        });

        instance.AddEventHandler<TestEvent>((ep) =>
        {
            if (ep.id == 1)
            {
                count += 1;
                if (count < 3)
                {
                    ep.Api.Keep<TestEvent>();
                    ep.Api.Trigger(new TestEvent() { id = 1 });
                }
                else
                {
                    ep.Api.Trigger(new TestEvent() { id = 2 });
                }
            }
        });

        instance.Trigger(new TestEvent() { id = 1 });
        Assert(doneHandlerRun);
    }