public IRoyalty ToRoyalty()
 {
     return(RoyaltyType switch
     {
         RoyaltyType.Fixed => new FixedRoyalty(Account !, Token ?? Address.None, FixedAmount.GetValueOrDefault()),
         RoyaltyType.Token => new TokenRoyalty(Account !, Numerator.GetValueOrDefault(), Denominator.GetValueOrDefault(), Minimum.GetValueOrDefault(), Maximum.GetValueOrDefault(), AssessAsSurcharge),
         RoyaltyType.Asset => new AssetRoyalty(Account !, Numerator.GetValueOrDefault(), Denominator.GetValueOrDefault(), FallbackAmount.GetValueOrDefault(), FallbackToken ?? Address.None),
         _ => throw new ArgumentOutOfRangeException("Unsupported Royalty Type"),
     });