private static bool ContainsBreakStatementThatBelongsToParentLoop(StatementSyntax statement)
        {
            if (ShouldCheckBreakStatement())
            {
                foreach (SyntaxNode descendant in statement.DescendantNodes(statement.Span, f => !IsLoopOrNestedMethod(f.Kind())))
                {
                    if (descendant.IsKind(SyntaxKind.BreakStatement))
                    {
                        return(true);
                    }
                }
            }

            return(false);

            bool IsLoopOrNestedMethod(SyntaxKind kind)
            {
                return(kind.IsLoop() || kind.IsNestedMethod());
            }

            bool ShouldCheckBreakStatement()
            {
                for (SyntaxNode node = statement.Parent; node != null; node = node.Parent)
                {
                    if (node is MemberDeclarationSyntax)
                    {
                        break;
                    }

                    SyntaxKind kind = node.Kind();

                    if (kind.IsNestedMethod())
                    {
                        break;
                    }

                    if (kind.IsLoop())
                    {
                        return(true);
                    }
                }

                return(false);
            }
        }