code: protected List<JCTypeParameter> typeParametersOpt() {
          if (token.kind == LT) {
              ListBuffer<JCTypeParameter> typarams = new ListBuffer<>();
              nextToken();
              typarams.append(typeParameter());
              while (token.kind == COMMA) {
                  nextToken();
                  typarams.append(typeParameter());
              }
              accept(GT);
              return typarams.toList();
          } else {
              return List.nil();
          }
      }
docs: {@literal
  TypeParametersOpt = ["<" TypeParameter {"," TypeParameter} ">"]
  }