Variability modules for Java-like languages