@Nonnull
	private static String mapToJvm(@Nonnull String kotlinDescriptor) {
		return switch (kotlinDescriptor) {
			case "Lkotlin/Boolean;" -> "Z";
			case "Lkotlin/BooleanArray;" -> "[Z";
			case "Lkotlin/Byte;" -> "B";
			case "Lkotlin/ByteArray;" -> "[B";
			case "Lkotlin/UByte;",
					"Lkotlin/Int;",
					"Lkotlin/UInt;",
					"Lkotlin/UShort;" -> "I";
			case "Lkotlin/UByteArray;",
					"Lkotlin/IntArray;",
					"Lkotlin/UIntArray;",
					"Lkotlin/UShortArray;" -> "[I";
			case "Lkotlin/Char;" -> "C";
			case "Lkotlin/CharArray;" -> "[C";
			case "Lkotlin/Double;" -> "D";
			case "Lkotlin/DoubleArray;" -> "[D";
			case "Lkotlin/Float;" -> "F";
			case "Lkotlin/FloatArray;" -> "[F";
			case "Lkotlin/Long;", "Lkotlin/ULong;" -> "J";
			case "Lkotlin/LongArray;", "Lkotlin/ULongArray;" -> "[J";
			case "Lkotlin/Short;" -> "S";
			case "Lkotlin/ShortArray;" -> "[S";
			case "Lkotlin/String;" -> "Ljava/lang/String;";

			// Some collections are directly mapped to Java's
			case "Lkotlin/collections/List;" -> "Ljava/util/List;";
			case "Lkotlin/collections/Set;" -> "Ljava/util/Set;";
			case "Lkotlin/collections/Map;" -> "Ljava/util/Map;";
			default -> kotlinDescriptor;
		};
	}
A transformer that renames classes and members based on Kotlin metadata.

@author Matt Coley
recaf-core/src/main/java/software/coley/recaf/services/deobfuscation/transform/generic/KotlinNameRestorationTransformer.java