parseYieldExpression_(allowIn) {
    let start = this.getTreeStartLocation_();
    this.eat_(YIELD);
    let expression = null;
    let isYieldFor = false;

    let token = peekTokenNoLineTerminator();
    if (token !== null) {  // Not a new line.
      switch (token.type) {
        case CLOSE_CURLY:
        case CLOSE_PAREN:
        case CLOSE_SQUARE:
        case COLON:
        case COMMA:
        case END_OF_FILE:
        case SEMI_COLON:
          // The above set of tokens is the complete set of tokens that can
          // appear after an AssignmentExpression, and none of them can start an
          // AssignmentExpression.
          break;
        default:
          isYieldFor = this.eatIf_(STAR);
          expression = this.parseAssignmentExpression_(allowIn);
      }
    }

    return new YieldExpression(
        this.getTreeLocation_(start), expression, isYieldFor);
  }
YieldExpression[In] :
  yield
  yield [no LineTerminator here] AssignmentExpression[?In, Yield]
  yield [no LineTerminator here] * AssignmentExpression[?In, Yield]

@param {boolean} allowIn
@return {ParseTree}
@private