public Account(AccountId id, IAccountName name, Amount balance) { Id = id; Name = name; Balance = balance; }
public static R Match<R>(this IAccountName self, Func<PersonName, R> Person, Func<AccountName, R> Account) => self is PersonName p ? Person(p)
public static Account Account(AccountId id, IAccountName name, Amount balance) => new Account(id, name, balance);