[psi] search in decompiled code: fix context receivers for properties

also use string comparison for comparing types, because
`PsiReferenceClassType` over cls for kotlin.jvm.functions.FunctionN resolves to null
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt
index 72aba12..74d6064 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt
@@ -119,6 +119,7 @@
 
     private fun doPropertyMatch(member: PsiMethod, property: KtProperty, setter: Boolean): Boolean {
         val ktTypes = mutableListOf<KtTypeReference>()
+        property.contextReceivers.forEach { ktTypes.add(it.typeReference()!!) }
         property.receiverTypeReference?.let { ktTypes.add(it) }
         property.typeReference?.let { ktTypes.add(it) }
 
@@ -204,7 +205,8 @@
             return qualifiedName == StandardNames.FqNames.array.asString() ||
                     varArgs && areTypesTheSame(ktTypeRef, psiType.componentType, false)
         }
-        return ((psiType as? PsiClassType)?.rawType() ?: psiType).canonicalText == psiType(qualifiedName, ktTypeRef).canonicalText
+        //currently functional types are unresolved and thus type comparison doesn't work
+        return psiType.canonicalText.takeWhile { it != '<' } == psiType(qualifiedName, ktTypeRef).canonicalText
     }
 
     companion object {