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);
        }