code: JCTypeParameter typeParameter() {
          int pos = token.pos;
          List<JCAnnotation> annos = typeAnnotationsOpt();
          Name name = ident();
          ListBuffer<JCExpression> bounds = new ListBuffer<>();
          if (token.kind == EXTENDS) {
              nextToken();
              bounds.append(parseType());
              while (token.kind == AMP) {
                  nextToken();
                  bounds.append(parseType());
              }
          }
          return toP(F.at(pos).TypeParameter(name, bounds.toList(), annos));
      }
docs: {@literal
  TypeParameter = [Annotations] TypeVariable [TypeParameterBound]
  TypeParameterBound = EXTENDS Type {"&" Type}
  TypeVariable = Ident
  }