public bool IsStraight(IHand hand)
        {
            if (!IsValidHand(hand))
                return false;

            return hand.AreCardsConsecutive() &&
                  !hand.AreCardsSameSuit();
        }
        public bool IsHighCard(IHand hand)
        {
            if (!IsValidHand(hand))
                return false;

            return !hand.IsFaceRepeated(2) &&
                   !hand.IsFaceRepeated(3) &&
                   !hand.IsFaceRepeated(4) &&
                   !hand.AreCardsSameSuit() &&
                   !hand.AreCardsConsecutive();
        }
        public bool IsStraightFlush(IHand hand)
        {
            if (!EnsureValidHand(hand, THROW_ARG_EX))
                return false;

            return hand.AreCardsSameSuit() &&
                   hand.AreCardsConsecutive();
        }
        public bool IsHighCard(IHand hand)
        {
            if (!EnsureValidHand(hand, THROW_ARG_EX))
                return false;

            return !hand.HasXOfKind(2) &&
                   !hand.HasXOfKind(3) &&
                   !hand.HasXOfKind(4) &&
                   !hand.AreCardsSameSuit() &&
                   !hand.AreCardsConsecutive();
        }