+ private static boolean isValidNextCard(Card lastCard, Card nextCard) {
+ if (nextCard.getSuit().isRed() == lastCard.getSuit().isRed())
+ return false;
+
+ return lastCard.getRank().isSuccessorOf(nextCard.getRank());
+ }
+
+ private static boolean isValidRun(List<Card> run) {
+ Card prev = null;
+
+ for (Card next : run) {
+ if (next.isHidden() || (prev != null && !isValidNextCard(prev, next)))
+ return false;
+
+ prev = next;
+ }
+
+ return true;
+ }
+