wrapper->MarkBeforeJSFinalize(cx);
MarkForValidWrapper(JSContext *cx, XPCWrappedNative* wrapper, void *arg){    // NOTE: It might be nice to also do the wrapper->Mark() call here too.    // That call marks the wrapper's and wrapper's proto's interface sets.    // We currently do that in the GC callback code. The reason we don't do that    // here is because the bits used in that marking do unpleasant things to the    // member counts in the interface and interface set objects. Those counts    // are used in the DealWithDyingGCThings calls that are part of this JS GC    // marking phase. By doing these calls later during our GC callback we     // avoid that problem. Arguably this could be changed. But it ain't broke.         if(wrapper->HasProto())    {        JSObject* obj = wrapper->GetProto()->GetJSProtoObject();        NS_ASSERTION(obj, "bad proto");        JS_MarkGCThing(cx, obj, "XPCWrappedNativeProto::mJSProtoObject", arg);    }    MarkScopeJSObjects(cx, wrapper->GetScope(), arg);}