mMatches = PL_NewHashTable(16 ,
static const size_t kBucketSizes[] = { sizeof(MatchEntry), sizeof(SupportEntry), sizeof(ResourceEntry), MatchSet::kEntrySize, MatchSet::kIndexSize };  static const PRInt32 kNumBuckets = sizeof(kBucketSizes) / sizeof(size_t);  static const PRInt32 kNumResourceElements = 64;  static const PRInt32 kInitialSize = (NS_SIZE_IN_HEAP(sizeof(MatchEntry)) + NS_SIZE_IN_HEAP(sizeof(SupportEntry)) + NS_SIZE_IN_HEAP(sizeof(ResourceEntry))) * kNumResourceElements + (NS_SIZE_IN_HEAP(MatchSet::kEntrySize) + NS_SIZE_IN_HEAP(MatchSet::kIndexSize)) * kNumResourceElements;  mPool.Init("ConflictSet", kBucketSizes, kNumBuckets, kInitialSize);  mMatches = PL_NewHashTable(kNumResourceElements ,
ConflictSet::Init(){    mMatches = PL_NewHashTable(16 /* XXXwaterson we need a way to give a hint? */,                               Key::HashKey,                               Key::CompareKeys,                               PL_CompareValues,                               &gMatchAllocOps,                               nsnull /* XXXwaterson use an arena */);    mSupport = PL_NewHashTable(16, /* XXXwaterson need hint */                               HashMemoryElement,                               CompareMemoryElements,                               PL_CompareValues,                               &gBindingAllocOps,                               nsnull /* XXXwaterson use an arena */);    mResources = PL_NewHashTable(16 /* XXX arbitrary */,                                 HashPointer,                                 PL_CompareValues,                                 PL_CompareValues,                                 &gResourceAllocOps,                                 nsnull /* XXX use an arena! */);    return NS_OK;}