void (String value, GenericType type) { if (value == null) { return; } while (value.length() > 0) { String typeStr = getNextType(value); int len = typeStr.length(); int wildcard = switch (typeStr.charAt(0)) { case '*' -> WILDCARD_UNBOUND; case '+' -> WILDCARD_EXTENDS; case '-' -> WILDCARD_SUPER; default -> WILDCARD_NO; }; type.getWildcards().add(wildcard); if (wildcard != WILDCARD_NO) { typeStr = typeStr.substring(1); } type.getArguments().add(typeStr.length() == 0 ? null : new GenericType(typeStr)); value = value.substring(len); } }