public static int MaximumDamagePerRound(this RulesText rulesText, Creature creature)
 => rulesText
 .Get <DamageToken>()
 .ByTokenGrouping()
 .CalculateMax(token => token.CalculateDamage(creature));
 public static int MaximumDifficultyClass(this RulesText rulesText, Creature creature)
 => rulesText
 .Get <DifficultyClassToken>()
 .ByTokenGrouping()
 .CalculateMax(token => token.CalculateDifficultyClass(creature));
 public static int MaximumAttackBonus(this RulesText rulesText, Creature creature)
 => rulesText
 .Get <AttackToken>()
 .ByTokenGrouping()
 .CalculateMax(token => token.CalculateAttack(creature));
 public static IEnumerable <T> Get <T>(this RulesText rulesText) => rulesText.Tokens.Where(token => token is T).Cast <T>();
 public static bool DealsDamage(this RulesText rulesText) => rulesText.Get <DamageToken>().Any();
 public static bool HasSpecialEffect(this RulesText rulesText) => rulesText.Get <DifficultyClassToken>().Any();
 public static bool IsAttack(this RulesText rulesText) => rulesText.Get <AttackToken>().Any();