JS_ReportError(cx, "can't alias %s to %s in class %s",
JS_ReportErrorNumber(cx, NULL, JSMSG_CANT_ALIAS,
JS_AliasProperty(JSContext *cx, JSObject *obj, const char *name,		 const char *alias){    JSObject *obj2;    JSProperty *prop;    JSAtom *atom;    JSScope *scope;    JSBool ok;    CHECK_REQUEST(cx);    /* XXXbe push this into jsobj.c or jsscope.c */    if (!LookupProperty(cx, obj, name, &obj2, &prop))	return JS_FALSE;    if (!prop) {	js_ReportIsNotDefined(cx, name);	return JS_FALSE;    }    if (obj2 != obj || !OBJ_IS_NATIVE(obj2)) {	OBJ_DROP_PROPERTY(cx, obj2, prop);	JS_ReportError(cx, "can't alias %s to %s in class %s",		       alias, name, OBJ_GET_CLASS(cx, obj2)->name);	return JS_FALSE;    }    atom = js_Atomize(cx, alias, strlen(alias), 0);    if (!atom) {	ok = JS_FALSE;    } else {	scope = (JSScope *) obj->map;	ok = (scope->ops->add(cx, scope, (jsid)atom, (JSScopeProperty *)prop)	      != NULL);    }    OBJ_DROP_PROPERTY(cx, obj, prop);    return ok;}