Is there any reason why the AttributeKey class is not a data class and does not have equals() and hashCode() functions defined? This means that AttributeKey instances with the same name are not considered as equal. So the following code would fail:
call.attributes.put(AttributeKey("MyKey"), "My Value")
val myValue = call.attributes.get(AttributeKey("MyKey")) // <-- the key here is not the same one inserted before