public static void Register(CodeRefactoringContext context, InitializerExpressionSyntax initializer) { if (initializer == null) { throw new ArgumentNullException(nameof(initializer)); } if (initializer.IsAnyKind(SyntaxKind.ObjectInitializerExpression, SyntaxKind.CollectionInitializerExpression) && initializer.Expressions.Count > 0 && initializer.Parent?.IsKind(SyntaxKind.ObjectCreationExpression) == true) { switch (initializer.Parent.Parent?.Kind()) { case SyntaxKind.SimpleAssignmentExpression: { var assignmentExpression = (AssignmentExpressionSyntax)initializer.Parent.Parent; if (assignmentExpression.Left != null && assignmentExpression.Parent?.IsKind(SyntaxKind.ExpressionStatement) == true && assignmentExpression.Parent.Parent?.IsKind(SyntaxKind.Block) == true) { context.RegisterRefactoring( Title, cancellationToken => ExpandObjectInitializerAsync( context.Document, initializer, (ExpressionStatementSyntax)assignmentExpression.Parent, assignmentExpression.Left.WithoutTrivia(), cancellationToken)); } break; } case SyntaxKind.EqualsValueClause: { var equalsValueClause = (EqualsValueClauseSyntax)initializer.Parent.Parent; if (equalsValueClause.Parent?.IsKind(SyntaxKind.VariableDeclarator) == true && equalsValueClause.Parent.Parent?.IsKind(SyntaxKind.VariableDeclaration) == true && equalsValueClause.Parent.Parent.Parent?.IsKind(SyntaxKind.LocalDeclarationStatement) == true && equalsValueClause.Parent.Parent.Parent.Parent?.IsKind(SyntaxKind.Block) == true) { context.RegisterRefactoring( Title, cancellationToken => ExpandObjectInitializerAsync( context.Document, initializer, (LocalDeclarationStatementSyntax)equalsValueClause.Parent.Parent.Parent, IdentifierName(((VariableDeclaratorSyntax)equalsValueClause.Parent).Identifier.ToString()), cancellationToken)); } break; } } } }