public void CheckSingleUseArgs()
        {
            // TestEvent2

            var handled = false;
            var sender  = new object();

            EventHandler <TestEventArgs> handler = (x, args) => { handled = true; };

            var argCount = 0;

            TestEvent2.SafeInvoke(nameof(TestEvent2), sender, () =>
            {
                ++argCount;
                return(new TestEventArgs());
            }, ArgsUsageKind.UniqueInstance);

            Assert.Equal(0, argCount);

            TestEvent2 += handler;

            TestEvent2.SafeInvoke(nameof(TestEvent2), sender, () =>
            {
                ++argCount;
                return(new TestEventArgs());
            }, ArgsUsageKind.UniqueInstance);

            Assert.True(handled);

            handled = false;

            TestEvent2.SafeInvoke(nameof(TestEvent2), sender, () =>
            {
                ++argCount;
                return(new TestEventArgs());
            }, ArgsUsageKind.UniqueInstance);

            TestEvent2 -= handler;

            Assert.Equal(2, argCount);
        }