Korat: automated testing based on Java predicates
Introduction to Algorithms