public static boolean elementsEqual(Element e1, Element e2) {
    if (e1 == null) {
      return e2 == null;
    }
    if (!Objects.equals(e1.getName(), e2.getName())) {
      return false;
    }
    if (!elementListsEqual(e1.getChildren(), e2.getChildren())) {
      return false;
    }
    if (!attributeListsEqual(e1.getAttributes(), e2.getAttributes())) {
      return false;
    }
    return true;
  }
public static boolean elementsEqual(Element e1, Element e2)