if (mDtorFunc) PL_DHashTableEnumerate(&mFrameValueMap, DestroyPropertyEnumerator, aPresContext);
NS_ASSERTION(mPresShell, "Frame manager already shut down.");  nsCOMPtr<nsIPresContext> presContext; mPresShell->GetPresContext(getter_AddRefs(presContext));     mPresShell->SetIgnoreFrameDestruction(PR_TRUE);  mIsDestroyingFrames = PR_TRUE;  if (mRootFrame) { mRootFrame->Destroy(presContext); mRootFrame = nsnull; }  if (mPrimaryFrameMap.ops) { PL_DHashTableFinish(&mPrimaryFrameMap); mPrimaryFrameMap.ops = nsnull; } if (mPlaceholderMap.ops) { PL_DHashTableFinish(&mPlaceholderMap); mPlaceholderMap.ops = nsnull; } delete mUndisplayedMap; DestroyPropertyList(presContext);    nsresult rv = RevokePostedEvents(); NS_ASSERTION(NS_SUCCEEDED(rv), "RevokePostedEvents failed:  might crash");  mPresShell = nsnull;     return rv;
FrameManager::PropertyList::Destroy(nsIPresContext* aPresContext){  // Enumerate any remaining frame/value pairs and destroy the value object  if (mDtorFunc)    PL_DHashTableEnumerate(&mFrameValueMap, DestroyPropertyEnumerator,                           aPresContext);}