public class Test { 

public class Condition<T> {} 

@SafeVarargs 
public static <T> Condition<T> allOf(Condition<? super T>... conditions) { 
return null; 
} 

public static <T> Condition<T> allOf(Iterable<? extends Condition<? super T>> conditions) { 
return null; 
} 

@SafeVarargs 
public static Condition<Number> compose(Condition<? super Number>... conditions) { 

// Compiles on JDK 8 and JDK 9 
Test.<Number> allOf(conditions); 

// Compiles on JDK 8 but *fails* on JDK 9 
allOf(conditions); 

return null; 
} 
}