code: @SuppressWarnings("fallthrough")
      List<JCStatement> blockStatements() {
          //todo: skip to anchor on error(?)
          int lastErrPos = -1;
          ListBuffer<JCStatement> stats = new ListBuffer<>();
          while (true) {
              List<JCStatement> stat = blockStatement();
              if (stat.isEmpty()) {
                  return stats.toList();
              } else {
                  // error recovery
                  if (token.pos == lastErrPos)
                      return stats.toList();
                  if (token.pos <= endPosTable.errorEndPos) {
                      skip(false, true, true, true);
                      lastErrPos = token.pos;
                  }
                  stats.addAll(stat);
              }
          }
      }
docs: BlockStatements = { BlockStatement }
  BlockStatement  = LocalVariableDeclarationStatement
  | ClassOrInterfaceOrEnumDeclaration
  | [Ident ":"] Statement
  LocalVariableDeclarationStatement
  = { FINAL | '@' Annotation } Type VariableDeclarators ";"