code: JCExpression bracketsSuffix(JCExpression t) {
          if ((mode & EXPR) != 0 && token.kind == DOT) {
              mode = EXPR;
              int pos = token.pos;
              nextToken();
              accept(CLASS);
              if (token.pos == endPosTable.errorEndPos) {
                  // error recovery
                  Name name;
                  if (LAX_IDENTIFIER.accepts(token.kind)) {
                      name = token.name();
                      nextToken();
                  } else {
                      name = names.error;
                  }
                  t = F.at(pos).Erroneous(List.<JCTree>of(toP(F.at(pos).Select(t, name))));
              } else {
                  Tag tag = t.getTag();
                  // Type annotations are illegal on class literals. Annotated non array class literals
                  // are complained about directly in term3(), Here check for type annotations on dimensions
                  // taking care to handle some interior dimension(s) being annotated.
                  if ((tag == TYPEARRAY && TreeInfo.containsTypeAnnotation(t)) || tag == ANNOTATED_TYPE)
                      syntaxError("no.annotations.on.dot.class");
                  t = toP(F.at(pos).Select(t, names._class));
              }
          } else if ((mode & TYPE) != 0) {
              if (token.kind != COLCOL) {
                  mode = TYPE;
              }
          } else if (token.kind != COLCOL) {
              syntaxError(token.pos, "dot.class.expected");
          }
          return t;
      }
docs: BracketsSuffixExpr = "." CLASS
  BracketsSuffixType =