// recursively on every value that is itself a map
if (map instanceof MapMap)
{
DataMap result = new DataMap();
MapMap mapMap = (MapMap) map;
for (Entry<String, Object> entry : mapMap.entrySet())
{
Object value = entry.getValue();
if (value instanceof Map<?, ?>)
value = convertToDataCollection((Map<?, ?>) value);
result.put(entry.getKey(), value);