const nsAReadableString& propertyStr = Substring(aVariable, PRUint32(4), aVariable.Length() - 4);
const nsAString& propertyStr = Substring(aVariable, PRUint32(4), aVariable.Length() - 4);
nsXULTemplateBuilder::AddBindingsFor(nsXULTemplateBuilder* aThis,                                     const nsAReadableString& aVariable,                                     void* aClosure){    // We should *only* be recieving "rdf:"-style variables. Make    // sure...    if (Substring(aVariable, PRUint32(0), PRUint32(4)) != NS_LITERAL_STRING("rdf:"))        return;    Rule* rule = NS_STATIC_CAST(Rule*, aClosure);    // Check to see if we've already seen this property. We'll    // know because we'll have already added a symbol for it.    PRInt32 var = rule->LookupSymbol(aVariable);    if (var != 0)        return;    // Strip it down to the raw RDF property by clobbering the "rdf:"    // prefix    const nsAReadableString& propertyStr = Substring(aVariable, PRUint32(4), aVariable.Length() - 4);    nsCOMPtr<nsIRDFResource> property;    gRDFService->GetUnicodeResource(nsAutoString(propertyStr).GetUnicode(), getter_AddRefs(property));    // Create a new variable that we'll binding to the    // property's value    aThis->mRules.CreateVariable(&var);    rule->AddSymbol(aVariable, var);    // In the simple syntax, the binding is always from the    // member variable, through the property, to the target.    rule->AddBinding(aThis->mMemberVar, property, var);}