fun canonicalize()

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
    }