bsp-testkit2/bsp-testkit/utils/FlatMapUtils.kt (18 lines of code) (raw):

package org.jetbrains.bsp.testkit import java.util.AbstractMap object FlatMapUtils { fun flatten(map: Map<String, Any>): Map<String, Any> = map.entries.flatMap { flatten(it) }.associate { "/${it.key}" to it.value } private fun flatten(entry: Map.Entry<String, Any>): List<Map.Entry<String, Any>> = 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) } }