interface UsageInfo { val usage: PsiElement } interface PsiElement interface KtParameter : PsiElement interface KtLightMethod : PsiElement // With covariant array here we do not visit lambda (it.usage is KtLightMethod) below // Problem disappears if 'out' is removed fun Array.filterNot(f: (T) -> Boolean): List { return this } fun Array.toList(): List? = null fun foo(element: PsiElement, usages: Array) { val adjusted = if (element is KtParameter) usages.filterNot { it.usage is KtLightMethod } else usages.toList() }