// ECMA-262 12.3.3 The new Operator public Node parseNewExpression() { Node callee; List<Node> args; Node node = new Node(); expectKeyword("new"); if (match(".")) { lex(); if (lookahead.type == TokenType.Identifier && lookahead.value == "target") { if (state.inFunctionBody) { lex(); return node.finishMetaProperty("new", "target"); } } throwUnexpectedToken(lookahead); } callee = isolateCoverGrammar(parseLeftHandSideExpression); args = match("(") ? parseArguments() : new List<Node>(); isAssignmentTarget = isBindingElement = false; return node.finishNewExpression(callee, args); }