public async Task Nested()
        {
            const string source = @"
                sealed class Test
                {
                    /*0+*/public class Nested
                    {
                    }/*-0*/
                }
            ";

            var diags = await RoslynTestUtils.RunAnalyzer(
                new UsingUnsealedNonPublicClassAnalyzer(),
                null,
                new[] { source }).ConfigureAwait(false);

            Assert.Single(diags);
            source.AssertDiagnostic(0, DiagDescriptors.UsingUnsealedNonPublicClass, diags[0]);
        }
        public async Task Fixer()
        {
            const string source = @"
internal class Test
{
}
            ";

            const string expected = @"
internal sealed class Test
{
}
            ";

            var l = await RoslynTestUtils.RunAnalyzerAndFixer(
                new UsingUnsealedNonPublicClassAnalyzer(),
                new UsingUnsealedNonPublicClassFixer(),
                null,
                new[] { source }).ConfigureAwait(false);

            var actual = l[0];

            Assert.Equal(expected.Replace("\r\n", "\n", StringComparison.Ordinal), actual);
        }
        public async Task Analyzer()
        {
            const string source = @"
                /*0+*/internal class Test
                {
                }/*-0*/

                /*1+*/internal class Ext2 : UnsealedBase
                {
                }/*-1*/

                /*2+*/public class Public
                {
                    internal Public()
                    {
                    }
                }/*-2*/

                public class Public2
                {
                    public Public2()
                    {
                    }
                }

                internal class UnsealedBase
                {
                }

                internal sealed class Ext : UnsealedBase
                {
                }

                internal static class Static
                {
                }

                internal abstract class Abstract
                {
                }

                namespace Foo
                {
                    internal sealed class C1
                    {
                        /*3+*/private class C2
                        {
                        }/*-3*/
                    }

                    namespace Bar
                    {
                        public class C3
                        {
                            public class C4
                            {
                            }
                        }
                    }
                }
            ";

            var d = await RoslynTestUtils.RunAnalyzer(
                new UsingUnsealedNonPublicClassAnalyzer(),
                null,
                new[] { source }).ConfigureAwait(false);

            Assert.Equal(4, d.Count);
            source.AssertDiagnostic(0, DiagDescriptors.UsingUnsealedNonPublicClass, d[0]);
            source.AssertDiagnostic(1, DiagDescriptors.UsingUnsealedNonPublicClass, d[1]);
            source.AssertDiagnostic(2, DiagDescriptors.UsingUnsealedNonPublicClass, d[2]);
            source.AssertDiagnostic(3, DiagDescriptors.UsingUnsealedNonPublicClass, d[3]);
        }