Extracted inner clases
Implemented isSubList and generateCandidate()