public boolean equals(Element element) {
      if (!super.equals(element)) return false;
      
      Map<String, Element> elementMap = ((ObjectElement)element).getElements();
      if (this.getElements().size() != elementMap.size()) return false;
      
      for (String thisKey : this.getElements().keySet()) {
         Element thisValue = this.getElements().get(thisKey);
         if (elementMap.containsKey(thisKey)) {
            Element elementValue = elementMap.get(thisKey);
            if (!thisValue.equals(elementValue)) return false;
         }
      }
      
      return true;
   }