public void Something_that_is_in_same_AppDomain_should_be_callable_indirectly()
        {
            AppDomain.CurrentDomain.RunAtIsolatedDomain(() =>
            {
                using (new IndirectionsContext())
                {
                    // Arrange
                    PAppDomainSomething.Do().Body = () => { };

                    // Act, Assert
                    ExceptionAssert.DoesNotThrow(() => AppDomainSomething.Do());
                }
            });
        }
        public void Something_that_is_cross_plural_AppDomains_should_not_be_callable_indirectly()
        {
            using (new IndirectionsContext())
            {
                // Arrange
                PAppDomainSomething.Do().Body = () => { };
            }

            AppDomain.CurrentDomain.RunAtIsolatedDomain(() =>
            {
                using (new IndirectionsContext())
                {
                    // Act, Assert
                    ExceptionAssert.Throws <InvalidOperationException>(() => AppDomainSomething.Do());
                }
            });
        }
        public void Something_that_is_cross_plural_AppDomains_should_be_handled_as_different_setup()
        {
            lock (AppDomainMixin.SyncRoot)
            {
                AppDomain.CurrentDomain.RunAtIsolatedDomain(() =>
                {
                    using (new IndirectionsContext())
                    {
                        // Arrange
                        PAppDomainSomething.Do().Body = () => { };
                    }
                });

                AppDomain.CurrentDomain.RunAtIsolatedDomain(() =>
                {
                    using (new IndirectionsContext())
                    {
                        // Act, Assert
                        ExceptionAssert.Throws <InvalidOperationException>(() => AppDomainSomething.Do());
                    }
                });
            }
        }