in core/src/main/java/com/epam/coroutinecache/utils/Types.kt [41:58]
fun canonicalize(type: Type): Type {
var result = type
when (type) {
is Class<*> -> {
if (type.isArray) result = GenericArrayTypeImpl(canonicalize(type.componentType))
}
is ParameterizedType -> {
if (type !is ParameterizedTypeImpl) result = ParameterizedTypeImpl(type.ownerType, type.rawType, type.actualTypeArguments)
}
is GenericArrayType -> {
if (type !is GenericArrayTypeImpl) result = GenericArrayTypeImpl(type.genericComponentType)
}
is WildcardType -> {
if (type !is WildcardTypeImpl) result = WildcardTypeImpl(type.upperBounds, type.lowerBounds)
}
}
return result
}