public static void bindDictionaryToElement(Dictionary dict, Document doc, Element element) {
    for (Map.Entry<String, Object> entry : dict) {
      String k = entry.getKey();
      Object v = entry.getValue();

      Element key = doc.createElement("key");
      key.appendChild(doc.createTextNode(k));
      element.appendChild(key);

      if (v instanceof String) {
        Element value = doc.createElement("string");
        value.appendChild(doc.createTextNode(v.toString()));
        element.appendChild(value);
      } else if (v instanceof Integer) {
        Element value = doc.createElement("integer");
        value.appendChild(doc.createTextNode(((Integer) v).toString()));
        element.appendChild(value);
      } else if (v instanceof Boolean) {
        Element value = doc.createElement("boolean");
        value.appendChild(doc.createTextNode(((Boolean) v).toString()));
        element.appendChild(value);
      } else if (v instanceof List<?>) {
        Element value = doc.createElement("list");
        ListParser.bindListToElement((List<Object>) v, doc, value);
        element.appendChild(value);
      } else if (v instanceof Dictionary) {
        Element value = doc.createElement("dict");
        bindDictionaryToElement((Dictionary) v, doc, value);
        element.appendChild(value);
      }
    }
  }