docs: private static TypeArgument parse(final Parser parser, final String definingClassName) throws ParseException {
          final char peek = parser.peek();
          if (peek == '*') {
              parser.expect('*');
              return new TypeArgument(Wildcard.ANY, null);
          } else if (peek == '+') {
              parser.expect('+');
              final ReferenceTypeSignature typeSignature = ReferenceTypeSignature.parseReferenceTypeSignature(parser,
                      definingClassName);
              if (typeSignature == null) {
                  throw new ParseException(parser, "Missing '+' type bound");
              }
              return new TypeArgument(Wildcard.EXTENDS, typeSignature);
          } else if (peek == '-') {
              parser.expect('-');
              final ReferenceTypeSignature typeSignature = ReferenceTypeSignature.parseReferenceTypeSignature(parser,
                      definingClassName);
              if (typeSignature == null) {
                  throw new ParseException(parser, "Missing '-' type bound");
              }
              return new TypeArgument(Wildcard.SUPER, typeSignature);
          } else {
              final ReferenceTypeSignature typeSignature = ReferenceTypeSignature.parseReferenceTypeSignature(parser,
                      definingClassName);
              if (typeSignature == null) {
                  throw new ParseException(parser, "Missing type bound");
              }
              return new TypeArgument(Wildcard.NONE, typeSignature);
          }
      }