public void RemoveCandidate(TItem candidate) { if (!IsSolved) { CandidateSet.Remove(candidate); if (IsSolved) { OnSolved(new ConstraintSolvedEventArgs <TOwner>(Owner)); } } }