// optional 1 nested type argument
pattern = new TypePattern("LIST<*>");
assertTrue(pattern.matches("LIST"));
assertTrue(pattern.matches("LIST<STRING>"));
assertFalse(pattern.matches("LIST<LIST<STRING>>"));
// this shows this can also match nested lists, which may go a bit beyond the purpose as this kind
// of matching should serve to guarantee 1-level nested types. However, in practice this won't occur
// since a list always has a type argument.
assertTrue(pattern.matches("LIST<LIST>"));