public void Update(Clue clue) { if (clue == null) { throw new ArgumentNullException(nameof(clue)); } foreach (CardInHand card in clue.Cards) { ApplyClue(card, clue.Type); } IEnumerable <CardInHand> otherCards = _thoughts .Select(thought => thought.CardInHand); Clue revertedClue = Clue.Revert(clue, otherCards); foreach (CardInHand otherCard in revertedClue.Cards) { ApplyClue(otherCard, revertedClue.Type); } }