public static StatementSyntax Rewrite( SwitchStatementSyntax switchStatement, SemanticModel semanticModel, SyntaxEditor editor, SyntaxKind nodeToGenerate, bool shouldMoveNextStatementToSwitchExpression) { var rewriter = new Rewriter(isAllThrowStatements: nodeToGenerate == SyntaxKind.ThrowStatement); // Rewrite the switch statement as a switch expression. var switchExpression = rewriter.RewriteSwitchStatement(switchStatement, allowMoveNextStatementToSwitchExpression: shouldMoveNextStatementToSwitchExpression); // Only on simple assignments we attempt to remove variable declarators. var isSimpleAssignment = nodeToGenerate == SyntaxKind.SimpleAssignmentExpression; var generateDeclaration = isSimpleAssignment && rewriter.TryRemoveVariableDeclarators(switchStatement, semanticModel, editor); // Generate the final statement to wrap the switch expression, e.g. a "return" or an assignment. return(rewriter.GetFinalStatement(switchExpression, switchStatement.SwitchKeyword.LeadingTrivia, nodeToGenerate, generateDeclaration)); }