code: private ParseTree parseThrowStatement() {
      SourcePosition start = getTreeStartLocation();
      eat(TokenType.THROW);
      ParseTree value = null;
      if (peekImplicitSemiColon()) {
        reportError("semicolon/newline not allowed after 'throw'");
      } else {
        value = parseExpression();
      }
      eatPossibleImplicitSemiColon();
      return new ThrowStatementTree(getTreeLocation(start), value);
    }
docs: 12.13 Throw Statement