@Override
  protected void setValue(final @Nullable String value) {
    final XmlTag tag = ensureTagExists();
    final String attributeName = getXmlElementName();
    final String namespace = getXmlApiCompatibleNamespace(getParentHandler());
    String tagValue = tag.getAttributeValue(attributeName, namespace);
    final String oldValue = tagValue == null ? null : StringUtil.unescapeXmlEntities(tagValue);
    final String newValue = XmlStringUtil.escapeString(value);
    if (Comparing.equal(oldValue, newValue, true)) return;

    getManager().runChange(() -> {
      try {
        setXmlElement(tag.setAttribute(attributeName, namespace, newValue));
      }
      catch (IncorrectOperationException e) {
        LOG.error(e);
      }
    });
    final DomElement proxy = getProxy();
    getManager().fireEvent(oldValue != null ? new DomEvent(proxy, false) : new DomEvent(proxy, true));
  }
@Override
  protected void setValue(final @Nullable String value)