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"), });