JSParseNode *pn;
JSParseNode *pn, *pn1, *pn2;
NewBinary(JSContext *cx, JSTokenType tt,          JSOp op, JSParseNode *left, JSParseNode *right,          JSTreeContext *tc){    JSParseNode *pn;    if (!left || !right)        return NULL;    pn = tc->nodeList;    if (pn) {        tc->nodeList = pn->pn_next;    } else {        JS_ARENA_ALLOCATE_TYPE(pn, JSParseNode, &cx->tempPool);        if (!pn) {            JS_ReportOutOfMemory(cx);            return NULL;        }    }    pn->pn_type = tt;    pn->pn_pos.begin = left->pn_pos.begin;    pn->pn_pos.end = right->pn_pos.end;    pn->pn_op = op;    pn->pn_arity = PN_BINARY;    pn->pn_left = left;    pn->pn_right = right;    pn->pn_next = NULL;#ifdef METER_PARSENODES    parsenodes++;    if (parsenodes - recyclednodes > maxparsenodes)        maxparsenodes = parsenodes - recyclednodes;#endif    return pn;}