PR_LOG(gXULTemplateLog, PR_LOG_ALWAYS,
PR_LOG(gLog, PR_LOG_ALWAYS,
nsXULTemplateBuilder::CompileMemberCondition(nsTemplateRule* aRule,                                             nsIContent* aCondition,                                             InnerNode* aParentNode,                                             TestNode** aResult){    // Compile a <member> condition, which must be of the form:    //    //   <member container="?var1" child="?var2" />    //    // container    nsAutoString container;    aCondition->GetAttr(kNameSpaceID_None, nsXULAtoms::container, container);    if (container[0] != PRUnichar('?')) {        PR_LOG(gXULTemplateLog, PR_LOG_ALWAYS,               ("xultemplate[%p] on <member> test, expected 'container' attribute to name a variable", this));        return NS_OK;    }    PRInt32 containervar = mRules.LookupSymbol(container.get(), PR_TRUE);    // child    nsAutoString child;    aCondition->GetAttr(kNameSpaceID_None, nsXULAtoms::child, child);    if (child[0] != PRUnichar('?')) {        PR_LOG(gXULTemplateLog, PR_LOG_ALWAYS,               ("xultemplate[%p] on <member> test, expected 'child' attribute to name a variable", this));        return NS_OK;    }    PRInt32 childvar = mRules.LookupSymbol(child.get(), PR_TRUE);    TestNode* testnode =        new nsRDFConMemberTestNode(aParentNode,                                   mConflictSet,                                   mDB,                                   mContainmentProperties,                                   containervar,                                   childvar);    if (! testnode)        return NS_ERROR_OUT_OF_MEMORY;    mRDFTests.Add(testnode);        *aResult = testnode;    return NS_OK;}