nsXPCVarient v;
nsXPCVariant v;
      mParent(aParent){    NS_PRECONDITION(aName, "bad param");    NS_INIT_REFCNT();    NS_ADDREF_THIS();    mMethodBaseIndex = mParent ?                        mParent->mMethodBaseIndex +                        mParent->mMethodCount : 0;    mConstantBaseIndex = mParent ?                          mParent->mConstantBaseIndex +                          mParent->mConstantCount : 0;    ///////////////////////////////////////////////    // XXX completely bogus hardcoded stuff...    mMethodCount = 4;    mMethods = new nsXPCMethodInfo[4];    nsXPCParamInfo* params = new nsXPCParamInfo[3];    params[0] = nsXPCParamInfo(nsXPCParamInfo::IS_IN, nsXPCType::T_I32);    params[1] = nsXPCParamInfo(nsXPCParamInfo::IS_IN, nsXPCType::T_I32);    params[2] = nsXPCParamInfo(nsXPCParamInfo::IS_OUT | nsXPCParamInfo::IS_RETVAL, nsXPCType::T_I32);    nsXPCParamInfo result = nsXPCParamInfo(nsXPCParamInfo::IS_OUT, nsXPCType::T_U32);    // XXX these are bogus declarations - don't call!    mMethods[0] = nsXPCMethodInfo(0, "QueryInterface", 2, params, result);    mMethods[1] = nsXPCMethodInfo(0, "AddRef", 0, NULL, result);    mMethods[2] = nsXPCMethodInfo(0, "Release", 0, NULL, result);    // this one should be callable (in test/TestXPC.cpp)    mMethods[3] = nsXPCMethodInfo(0, "Test", 3, params, result);    ///////    mConstantCount = 2;    mConstants = new nsXPCConstant[2];    nsXPCVarient v;    v.type = nsXPCType::T_I32;    v.val.i32 = 5;    mConstants[0] = nsXPCConstant("five", v);    v.val.i32 = 6;    mConstants[1] = nsXPCConstant("six", v);    ///////////////////////////////////////////////    if(mParent)        NS_ADDREF(mParent);}