protected override IEnumerable <SyntaxNode> ExtractNodesSimple(SyntaxNode?node, ISyntaxFacts syntaxFacts) { if (node == null) { yield break; } foreach (var extractedNode in base.ExtractNodesSimple(node, syntaxFacts)) { yield return(extractedNode); } // `var a = b;` // -> `var a = b`; if (node is LocalDeclarationStatementSyntax localDeclaration) { yield return(localDeclaration.Declaration); } // var `a = b`; if (node is VariableDeclaratorSyntax declarator) { var declaration = declarator.Parent; if (declaration?.Parent is LocalDeclarationStatementSyntax localDeclarationStatement) { var variables = syntaxFacts.GetVariablesOfLocalDeclarationStatement(localDeclarationStatement); if (variables.Count == 1) { // -> `var a = b`; yield return(declaration); // -> `var a = b;` yield return(localDeclarationStatement); } } } }