nsXFormsControlStub::WillSetAttribute(aName, aValue);
nsXFormsControlStub::AttributeSet(aName, aValue);
nsXFormsTriggerElement::AttributeSet(nsIAtom *aName, const nsAString &aValue){  if (aName == nsXFormsAtoms::appearance) {    if (mIsMinimal != aValue.EqualsLiteral("minimal")) {      nsCOMPtr<nsIDOMNode> parent, next, tmp;      if (mDoneAddingChildren) {        mElement->GetParentNode(getter_AddRefs(parent));        if (parent) {          mElement->GetNextSibling(getter_AddRefs(next));          // Removing this element temporarily from the document so that          // the UI will be re-created properly later.          parent->RemoveChild(mElement, getter_AddRefs(tmp));        }      }      // Switch state      mIsMinimal = !mIsMinimal;      // Create new element      nsCOMPtr<nsIDOMDocument> domDoc;      mVisualContent->GetOwnerDocument(getter_AddRefs(domDoc));      NS_ENSURE_STATE(domDoc);      nsCOMPtr<nsIDOMElement> htmlElement;      if (mIsMinimal) {        domDoc->CreateElementNS(NS_LITERAL_STRING(NS_NAMESPACE_XHTML),                                NS_LITERAL_STRING("span"),                                getter_AddRefs(htmlElement));      } else {        domDoc->CreateElementNS(NS_LITERAL_STRING(NS_NAMESPACE_XHTML),                                NS_LITERAL_STRING("button"),                                getter_AddRefs(htmlElement));      }      NS_ENSURE_STATE(htmlElement);      // Append inner content (insertion point)      nsCOMPtr<nsIDOMNode> newnode;      nsresult rv = htmlElement->AppendChild(mInsertionPoint, getter_AddRefs(newnode));      NS_ENSURE_SUCCESS(rv, rv);      // Replace current visual      rv = mVisualContent->ReplaceChild(htmlElement, mHTMLElement, getter_AddRefs(tmp));      mHTMLElement = do_QueryInterface(htmlElement);            if (mDoneAddingChildren && parent)        parent->InsertBefore(mElement, next, getter_AddRefs(tmp));    }  } else {    nsXFormsControlStub::WillSetAttribute(aName, aValue);  }  return NS_OK;}