private IEnumerable <ReportWithLine> ReportWhenExistExcessLineBetweenBraces(BracesPair bracesPair)
        {
            var openBraceLine  = GetStartLine(bracesPair.Open);
            var closeBraceLine = GetStartLine(bracesPair.Close);
            var statements     = GetStatements(bracesPair.Open.Parent);

            if (statements.Length == 0)
            {
                yield break;
            }

            var firstStatement = statements.First();
            var lastStatement  = statements.Last();

            var firstStatementLine = GetStartLine(firstStatement);
            var lastStatementLine  = GetEndLine(lastStatement);

            if (openBraceLine != firstStatementLine &&
                openBraceLine + 1 != firstStatementLine &&
                !IsComment(bracesPair.Open.Parent, openBraceLine + 1))
            {
                yield return new ReportWithLine
                       {
                           Report = Report(bracesPair.Open, "После открывающей скобки не должно быть лишнего переноса строки"),
                           Line   = openBraceLine
                       }
            }
            ;

            if (closeBraceLine != lastStatementLine &&
                closeBraceLine - 1 != lastStatementLine &&
                !IsComment(bracesPair.Open.Parent, closeBraceLine - 1))
            {
                yield return new ReportWithLine
                       {
                           Report = Report(bracesPair.Close,
                                           "Перед закрывающей скобкой не должно быть лишнего переноса строки"),
                           Line = closeBraceLine
                       }
            }
            ;
        }
        private ReportWithLine ReportWhenExistExcessLineBetweenDeclaration(BracesPair bracesPair)
        {
            var openBraceLine   = GetStartLine(bracesPair.Open);
            var declarationLine = GetEndDeclaraionLine(bracesPair.Open.Parent);

            if (openBraceLine == declarationLine || declarationLine == -1)
            {
                return(null);
            }

            if (declarationLine + 1 != openBraceLine)
            {
                return new ReportWithLine
                       {
                           Report = Report(bracesPair.Open,
                                           "Между объявлением и открывающей скобкой не должно быть лишнего переноса строки"),
                           Line = openBraceLine
                       }
            }
            ;
            return(null);
        }
        private ReportWithLine ReportWhenNotExistLineBetweenBlocks(BracesPair bracesPair)
        {
            var closeBraceLine = GetStartLine(bracesPair.Close);

            var nextSyntaxNode = GetNextNode(bracesPair.Open.Parent);

            if (nextSyntaxNode == null || nextSyntaxNode is StatementSyntax)
            {
                return(null);
            }
            var nextSyntaxNodeLine = GetStartLine(nextSyntaxNode);

            if (closeBraceLine + 1 == nextSyntaxNodeLine)
            {
                return new ReportWithLine
                       {
                           Line   = closeBraceLine,
                           Report = Report(bracesPair.Close,
                                           "После закрывающей скобки должен быть дополнительный перенос строки")
                       }
            }
            ;
            return(null);
        }