private static boolean matchDescriptor(@Nonnull MethodMember method, @Nonnull String kotlinDescriptor) {
		String methodDescriptor = method.getDescriptor();
		if (methodDescriptor.equals(kotlinDescriptor))
			return true;

		// Try checking against the mapped descriptor
		try {
			if (kotlinDescriptor.charAt(0) != '(')
				return false;
			Type methodType = Type.getMethodType(kotlinDescriptor);
			StringBuilder sb = new StringBuilder("(");
			for (Type arg : methodType.getArgumentTypes())
				sb.append(mapToJvm(arg.getDescriptor()));
			sb.append(')').append(mapToJvm(methodType.getReturnType().getDescriptor()));
			String mappedDescriptor = sb.toString();
			return !mappedDescriptor.equals(kotlinDescriptor) && methodDescriptor.equals(mappedDescriptor);
		} catch (Throwable ignored) {
			return false;
		}
	}
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