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

            return hand.TimesXOfKind(2) == 2;
        }
        public bool IsOnePair(IHand hand)
        {
            if (!IsValidHand(hand))
                return false;

            return hand.TimesXOfKind(2) == 1 &&
                  !hand.IsFaceRepeated(3);
        }
        public bool IsTwoPair(IHand hand)
        {
            if (!EnsureValidHand(hand, THROW_ARG_EX))
                return false;
            // can't be 3, 4, same suit, or consecutive

            return hand.TimesXOfKind(2) == 2;
        }
        public bool IsOnePair(IHand hand)
        {
            if (!EnsureValidHand(hand, THROW_ARG_EX))
                return false;
            // can't be 4, same suit, or consecutive

            return hand.TimesXOfKind(2) == 1 &&
                  !hand.HasXOfKind(3);
        }