private void ShouldNotMutate()
        {
            SyntaxTree tree       = CSharpSyntaxTree.ParseText($@"
namespace Test
{{
    class Program
    {{
        static int Method()
        {{
            int variable = 0;

            Method(out var x);

            if (x is Type v)
            {{
                return;
            }}

            switch (x)
            {{
                case 1:
                    return;
                    break;
                    continue;
                    goto X;
                    throw x;
            }}

            return 1;
        }}
    }}
}}");
            var        statements = tree.GetRoot()
                                    .DescendantNodes()
                                    .OfType <StatementSyntax>();

            var target = new StatementMutator();

            var result = statements.SelectMany(target.ApplyMutations).ToList();

            result.ShouldBeEmpty();
        }
        private void ShouldMutate(string statementString)
        {
            var source = $@"class Test {{
                void Method() {{
                    {statementString}
                }}
            }}";

            var tree = CSharpSyntaxTree.ParseText(source).GetRoot();

            var statement = tree.DescendantNodes().OfType <StatementSyntax>().Where(s => s is not BlockSyntax).First();

            var target = new StatementMutator();

            var result = target.ApplyMutations(statement).ToList();

            var mutation = result.ShouldHaveSingleItem();

            mutation.ReplacementNode.ShouldBeOfType(typeof(EmptyStatementSyntax));
            mutation.DisplayName.ShouldBe("Statement mutation");
        }
        public void ShouldBeMutationlevelStandard()
        {
            var target = new StatementMutator();

            target.MutationLevel.ShouldBe(MutationLevel.Standard);
        }