private SyntaxNode CreateConditionalAccessExpression( ISyntaxFactsService syntaxFacts, SyntaxGenerator generator, SyntaxNode whenPart, SyntaxNode match, SyntaxNode currentConditional) { var memberAccess = match.Parent as TMemberAccessExpression; if (memberAccess != null) { return(whenPart.ReplaceNode(memberAccess, generator.ConditionalAccessExpression( match, generator.MemberBindingExpression( syntaxFacts.GetNameOfMemberAccessExpression(memberAccess))))); } var elementAccess = match.Parent as TElementAccessExpression; if (elementAccess != null) { return(whenPart.ReplaceNode(elementAccess, generator.ConditionalAccessExpression( match, generator.ElementBindingExpression( syntaxFacts.GetArgumentListOfElementAccessExpression(elementAccess))))); } return(currentConditional); }