Match* match = new (mConflictSet.GetPool()) Match(mRule, *inst, assignments); if (! match) return NS_ERROR_OUT_OF_MEMORY;
{ NodeSet::Iterator last = mRDFTests.Last(); for (NodeSet::Iterator i = mRDFTests.First(); i != last; ++i) { RDFTestNode* rdftestnode = NS_STATIC_CAST(RDFTestNode*, *i);
InstantiationNode::Propogate(const InstantiationSet& aInstantiations, void* aClosure){    // If we get here, we've matched the rule associated with this    // node. Extend it with any <bindings> that we might have, add it    // to the conflict set, and the set of new <content, member>    // pairs.    ClusterKeySet* newkeys = NS_STATIC_CAST(ClusterKeySet*, aClosure);    InstantiationSet::ConstIterator last = aInstantiations.Last();    for (InstantiationSet::ConstIterator inst = aInstantiations.First(); inst != last; ++inst) {        nsAssignmentSet assignments = inst->mAssignments;        Match* match = new (mConflictSet.GetPool()) Match(mRule, *inst, assignments);        if (! match)            return NS_ERROR_OUT_OF_MEMORY;        mRule->InitBindings(mConflictSet, match);        PRBool didAddKey;        mConflictSet.Add(match, &didAddKey);        // Give back our "local" reference. The conflict set will have        // taken what it needs.        match->Release();        if (didAddKey) {            newkeys->Add(ClusterKey(*inst, mRule));        }    }        return NS_OK;}