h ^= (JSHashNumber) Addition;
h = (JSHashNumber) Addition >> 2;
HashNativeKey(JSDHashTable *table, const void *key){    XPCNativeSetKey* Key = (XPCNativeSetKey*) key;    JSDHashNumber h = 0;    XPCNativeSet*       Set;    XPCNativeInterface* Addition;    PRUint16            Position;    if(Key->IsAKey())    {        Set      = Key->GetBaseSet();        Addition = Key->GetAddition();        Position = Key->GetPosition();    }    else    {        Set      = (XPCNativeSet*) Key;        Addition = nsnull;        Position = 0;    }    if(!Set)    {        NS_ASSERTION(Addition, "bad key");        h ^= (JSHashNumber) Addition;    }    else    {        XPCNativeInterface** Current = Set->GetInterfaceArray();        PRUint16 count = Set->GetInterfaceCount();        if(Addition)        {            count++;            for(PRUint16 i = 0; i < count; i++)            {                if(i == Position)                    h ^= (JSHashNumber) Addition;                else                    h ^= (JSHashNumber) *(Current++);            }        }        else        {            for(PRUint16 i = 0; i < count; i++)                h ^= (JSHashNumber) *(Current++);        }    }    return h;}