import java.util.Collection;
import org.checkerframework.checker.regex.qual.Regex;
class TypeParamSubtype {
// These are legal because null has type @Regex String
// <T extends @Regex String> void nullRegexSubtype(Collection<T> col) {
// //:: error: (argument.type.incompatible)
// col.add(null);
// }
//
// <T extends String> void nullSimpleSubtype(Collection<T> col) {
// //:: error: (argument.type.incompatible)
// col.add(null);
// }
<T extends @Regex String, U extends T> void nullRegexSubtype(Collection<T> col, U u) {
col.add(u);
}
<T extends String, U extends T> void nullSimpleSubtype(Collection<T> col, U u) {
col.add(u);
}
}