protected internal override Expression VisitConditionalAccess <TWhenNotNull>(ConditionalAccessCSharpExpression <TWhenNotNull> node)
            {
                if (node.NonNullReceiver == _receiver)
                {
                    var receiver = Visit(node.Receiver);
                    return(node.Update(receiver, node.NonNullReceiver, node.WhenNotNull));
                }

                return(base.VisitConditionalAccess(node));
            }
 protected internal virtual Expression VisitConditionalAccess(ConditionalAccessCSharpExpression node) =>
 node.Update(
     Visit(node.Receiver),
     VisitAndConvert(node.NonNullReceiver, nameof(VisitConditionalAccess)),
     Visit(node.WhenNotNull)
     );