[WIP][IR] Another approach for fixing type parameter validation

KT-69305
diff --git a/compiler/ir/ir.validation/src/org/jetbrains/kotlin/ir/validation/checkers/type/IrTypeParameterScopeChecker.kt b/compiler/ir/ir.validation/src/org/jetbrains/kotlin/ir/validation/checkers/type/IrTypeParameterScopeChecker.kt
index 354f042..a823e9f 100644
--- a/compiler/ir/ir.validation/src/org/jetbrains/kotlin/ir/validation/checkers/type/IrTypeParameterScopeChecker.kt
+++ b/compiler/ir/ir.validation/src/org/jetbrains/kotlin/ir/validation/checkers/type/IrTypeParameterScopeChecker.kt
@@ -6,6 +6,7 @@
 package org.jetbrains.kotlin.ir.validation.checkers.type
 
 import org.jetbrains.kotlin.ir.IrElement
+import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
 import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
 import org.jetbrains.kotlin.ir.types.IrSimpleType
 import org.jetbrains.kotlin.ir.types.IrType
@@ -34,15 +35,21 @@
 
     private fun checkTypeParameterReference(
         context: CheckerContext,
-        element: IrElement,
+        container: IrElement,
         typeParameterSymbol: IrTypeParameterSymbol,
     ) {
-        if (!context.typeParameterScopeStack.isVisibleInCurrentScope(typeParameterSymbol)) {
+        if (
+            !context.typeParameterScopeStack.isVisibleInCurrentScope(typeParameterSymbol) &&
+            !typeParameterSymbol.isIntroducedBy(container)
+        ) {
             context.error(
-                element,
+                container,
                 "The following element references a type parameter '${typeParameterSymbol.owner.render()}' that is not available " +
                         "in the current scope."
             )
         }
     }
-}
\ No newline at end of file
+
+    private fun IrTypeParameterSymbol.isIntroducedBy(container: IrElement): Boolean =
+        container is IrTypeParametersContainer && container.typeParameters.any { it.symbol == this }
+}