/// <summary> /// Returns all statements before the specified statement within the containing method. /// This method recursively traverses all parent blocks of the provided statement. /// </summary> public static IEnumerable <StatementSyntax> GetPreviousStatements(this StatementSyntax statement) { var previousStatements = statement.GetPreviousStatementsCurrentBlock(); return(statement.Parent is StatementSyntax parentStatement ? previousStatements.Union(GetPreviousStatements(parentStatement)) : previousStatements); }