if(!(obj = (JSObject*)argv[-2])) return JS_FALSE;
WrappedNative_Call(JSContext *cx, JSObject *obj,                   uintN argc, jsval *argv, jsval *rval){    nsIXPCScriptable* ds;    nsXPCWrappedNative* wrapper = (nsXPCWrappedNative*) JS_GetPrivate(cx,obj);    if(wrapper && NULL != (ds = wrapper->GetDynamicScriptable()))    {        JSBool retval;        if(NS_SUCCEEDED(ds->Call(cx, obj, argc, argv, rval,                        wrapper, wrapper->GetArbitraryScriptable(), &retval)))            return retval;        JS_ReportError(cx, "Call to nsXPCScriptable failed");    }    else        JS_ReportError(cx, "Cannot use wrapper as function unless it implements nsXPCScriptable");    return JS_FALSE;}