package org.jetbrains.bsp.testkit import java.util.AbstractMap object FlatMapUtils { fun flatten(map: Map): Map = map.entries.flatMap { flatten(it) }.associate { "/${it.key}" to it.value } private fun flatten(entry: Map.Entry): List> = when (val value = entry.value) { is Map<*, *> -> value.entries.flatMap { e -> flatten(AbstractMap.SimpleEntry("${entry.key}/${e.key}", e.value!!)) } is List<*> -> value.indices .map { i -> AbstractMap.SimpleEntry("${entry.key}/$i", value[i]!!) }.flatMap { flatten(it) } else -> listOf(entry) } }