if (fun->flags & JSFUN_LAMBDA) js_puts(jp, "(");
js_DecompileFunction(JSPrinter *jp, JSFunction *fun){    JSScope *scope, *oldscope;    JSScopeProperty *sprop, *snext;    JSBool ok;    JSAtom *atom;    uintN indent;    intN i;    if (jp->pretty) {        js_puts(jp, "\n");	js_printf(jp, "\t");    }    if (fun->flags & JSFUN_LAMBDA)        js_puts(jp, "(");    if (fun->flags & JSFUN_GETTER)        js_printf(jp, "%s ", js_getter_str);    else if (fun->flags & JSFUN_SETTER)        js_printf(jp, "%s ", js_setter_str);    js_printf(jp, "%s %s(",              js_function_str, fun->atom ? ATOM_BYTES(fun->atom) : "");    scope = NULL;    if (fun->script && fun->object) {	/*	 * Print the parameters.	 *	 * This code is complicated by the need to handle duplicate parameter	 * names.  A duplicate parameter is stored as a property with id equal	 * to the parameter number, but will not be in order in the linked list	 * of symbols. So for each parameter we search the list of symbols for	 * the appropriately numbered parameter, which we can then print.	 */	for (i = 0; ; i++) {	    jsid id;	    atom = NULL;	    scope = OBJ_SCOPE(fun->object);	    for (sprop = scope->props; sprop; sprop = snext) {		snext = sprop->next;		if (SPROP_GETTER_SCOPE(sprop, scope) != js_GetArgument)		    continue;		if (JSVAL_IS_INT(sprop->id) && JSVAL_TO_INT(sprop->id) == i) {		    atom = sym_atom(sprop->symbols);		    break;		}		id = (jsid) sym_atom(sprop->symbols);		if (JSVAL_IS_INT(id) && JSVAL_TO_INT(id) == i) {		    atom = (JSAtom *) sprop->id;		    break;		}	    }	    if (atom == NULL)		break;	    js_printf(jp, (i > 0 ? ", %s" : "%s"), ATOM_BYTES(atom));	}    }    js_printf(jp, ") {\n");    indent = jp->indent;    jp->indent += 4;    if (fun->script && fun->object) {	oldscope = jp->scope;	jp->scope = scope;	ok = js_DecompileScript(jp, fun->script);	jp->scope = oldscope;	if (!ok) {	    jp->indent = indent;	    return JS_FALSE;	}    } else {	js_printf(jp, native_code_str);    }    jp->indent -= 4;    js_printf(jp, "\t}");    if (fun->flags & JSFUN_LAMBDA)        js_puts(jp, ")");    if (jp->pretty)	js_puts(jp, "\n");    return JS_TRUE;}