Type checking annotation-based product lines
Featherweight Java: a minimal core calculus for Java and GJ