using System.Diagnostics.CodeAnalysis;
public static void Main()
Console.WriteLine("Hello World");
InvestorAccount inv = new PrivateInvestorAccount();
if (inv is PrivateInvestorAccount pinv)
public interface IHolder {}
public class Person : IHolder {}
public abstract class InvestorAccount
[MemberNotNullWhen(true, nameof(Holder))]
public virtual bool IsRegistered => false;
public virtual object? Holder { get; }
public class PrivateInvestorAccount : InvestorAccount
public override Person? Holder { get; }