}
  public boolean isEqualNode(Node arg)  {    if (this == arg)      {        return true;      }    if (arg == null)      {        return false;      }    if (nodeType != arg.getNodeType() ||        !equal(getNodeName(), arg.getNodeName()) ||        !equal(getLocalName(), arg.getLocalName()) ||        !equal(getNamespaceURI(), arg.getNamespaceURI()) ||        !equal(getPrefix(), arg.getPrefix()) ||        !equal(getNodeValue(), arg.getNodeValue()))      {        return false;      }    // Children    Node argCtx = arg.getFirstChild();    getFirstChild(); // because of DomAttr lazy children    for (DomNode ctx = first; ctx != null; ctx = ctx.next)      {        if (!ctx.isEqualNode(argCtx))          {            return false;          }        argCtx = argCtx.getNextSibling();      }    if (argCtx != null)      {        return false;      }        // TODO Attr NamedNodeMap    // TODO DocumentType    return true;  }