code: List<JCStatement> forInit() {
          ListBuffer<JCStatement> stats = new ListBuffer<>();
          int pos = token.pos;
          if (token.kind == FINAL || token.kind == MONKEYS_AT) {
              return variableDeclarators(optFinal(0), parseType(), stats).toList();
          } else {
              JCExpression t = term(EXPR | TYPE);
              if ((lastmode & TYPE) != 0 && LAX_IDENTIFIER.accepts(token.kind)) {
                  return variableDeclarators(mods(pos, 0, List.<JCAnnotation>nil()), t, stats).toList();
              } else if ((lastmode & TYPE) != 0 && token.kind == COLON) {
                  error(pos, "bad.initializer", "for-loop");
                  return List.of((JCStatement)F.at(pos).VarDef(null, null, t, null));
              } else {
                  return moreStatementExpressions(pos, t, stats).toList();
              }
          }
      }
docs: ForInit = StatementExpression MoreStatementExpressions
  |  { FINAL | '@' Annotation } Type VariableDeclarators