if (! canretract) { canretract = mMembershipProperties.Contains(aProperty);
{ MatchSet::ConstIterator last = retractions.Last(); for (MatchSet::ConstIterator match = retractions.First(); match != last; ++match) { Value member; match->mInstantiation.mBindings.GetBindingFor(match->mRule->GetMemberVariable(), &member);  Value content; match->mInstantiation.mBindings.GetBindingFor(mContentVar, &content);  RemoveMember(VALUE_TO_ICONTENT(content), VALUE_TO_IRDFRESOURCE(member), PR_TRUE); } }   { MatchSet::ConstIterator last = firings.Last(); for (MatchSet::ConstIterator match = firings.First(); match != last; ++match) {  } }
RDFContainerMemberTestNode::Retract(ConflictSet& aConflictSet,                                    nsIRDFResource* aSource,                                    nsIRDFResource* aProperty,                                    nsIRDFNode* aTarget,                                    MatchSet& aFirings,                                    MatchSet& aRetractions) const{    PRBool canretract = PR_FALSE;    // We can certainly retract ordinal properties    nsresult rv;    rv = gRDFContainerUtils->IsOrdinalProperty(aProperty, &canretract);    if (NS_FAILED(rv)) return;    if (! canretract) {        canretract = mMembershipProperties.Contains(aProperty);    }    if (canretract) {        aConflictSet.Remove(Element(aSource, aTarget), aFirings, aRetractions);    }}