NoThrowExpressionVisitor
using System.Linq.Expressions;
using System.Runtime.CompilerServices;
namespace Newtonsoft.Json.Utilities
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(0)]
    internal class NoThrowExpressionVisitor : ExpressionVisitor
    {
        internal static readonly object ErrorResult = new object();
        protected override Expression VisitConditional(ConditionalExpression node)
        {
            if (node.IfFalse.NodeType == ExpressionType.Throw)
                return Expression.Condition(node.Test, node.IfTrue, Expression.Constant(ErrorResult));
            return base.VisitConditional(node);
        }
    }
}