function domToMap(node) {
if (node.children.length === 0) return node.innerHTML;
const counts = childCounts(node);
const map = new Map();
for (const child of node.children) {
const { localName } = child;
const lat = +child.getAttribute("latitude");
const lng = +child.getAttribute("longitude");
const latlng = [lat, lng];
if (counts[localName] > 1) {
const array = map.get(localName) || [];
array.push(domToMap(child));
if (localName === "point") {
map.set(localName, latlng);
} else map.set(localName, array);
} else {
if (localName === "point") {
map.set(localName, latlng);
} else map.set(localName, domToMap(child));
}
}
return map;
}