/// <summary>
        /// Render out the GammaWorldCharacter's powers.
        /// </summary>
        /// <param name="GammaWorldCharacter">
        /// The <see cref="Character"/> to render.
        /// </param>
        /// <param name="predicate">
        /// Only render the power if the given predicate matches.
        /// </param>
        /// <param name="resourceDictionary">
        /// A <see cref="ResourceDictionary"/> containing styles.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// No argument can be null.
        /// </exception>
        private IEnumerable<PowerEntry> ConstructPowers(Character GammaWorldCharacter, 
            Predicate<Power> predicate, ResourceDictionary resourceDictionary)
        {
            if (GammaWorldCharacter == null)
            {
                throw new ArgumentNullException("GammaWorldCharacter");
            }
            if (predicate == null)
            {
                throw new ArgumentNullException("predicate");
            }
            if (resourceDictionary == null)
            {
                throw new ArgumentNullException("resourceDictionary");
            }

            List<Power> powers;
            List<Power> displayedPowers;

            powers = new List<Power>();
            powers.AddRange(GammaWorldCharacter.GetUsablePowers());

            displayedPowers = new List<Power>();
            foreach (Power power in powers)
            {
                if (!displayedPowers.Contains(power))
                {
                    if (predicate(power))
                    {
                        if (power is AttackPower)
                        {
                            yield return ConstructAttackPowerEntry(GammaWorldCharacter, (AttackPower)power, resourceDictionary);
                        }
                        else if (power is UtilityPower)
                        {
                            yield return ConstructUtilityPowerEntry(GammaWorldCharacter, (UtilityPower)power, resourceDictionary);
                        }
                        displayedPowers.Add(power);
                    }
                }
            }
        }