// optionally any number of nested type arguments, including 0
pattern = new TypePattern("LIST<**>");
assertTrue(pattern.matches("LIST"));
assertFalse(pattern.matches("STRING"));
assertTrue(pattern.matches("LIST<STRING>"));
assertTrue(pattern.matches("LIST<LIST<STRING>>"));
assertTrue(pattern.matches("LIST<LIST<PATH<STRING>>>"));
// optionally any number of nested type arguments, but at least 1
pattern = new TypePattern("LIST<++>");