public override async Task RegisterCodeFixesAsync(CodeFixContext context) { Diagnostic diagnostic = context.Diagnostics[0]; SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!IsEnabled(diagnostic.Id, CodeFixIdentifiers.AddExplicitCast, context.Document, root.SyntaxTree)) { return; } if (!TryFindFirstAncestorOrSelf(root, context.Span, out ConditionalExpressionSyntax conditionalExpression)) { return; } ExpressionSyntax whenTrue = conditionalExpression.WhenTrue; ExpressionSyntax whenFalse = conditionalExpression.WhenFalse; if (whenTrue?.IsMissing != false) { return; } if (whenFalse?.IsMissing != false) { return; } SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); ITypeSymbol falseType = semanticModel.GetTypeSymbol(whenFalse, context.CancellationToken); if (falseType?.IsErrorType() != false) { return; } ITypeSymbol destinationType = FindDestinationType(whenTrue, falseType.BaseType, semanticModel); if (destinationType == null) { return; } CodeFixRegistrator.AddExplicitCast(context, diagnostic, whenTrue, destinationType, semanticModel); }