diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/wholeDeclaration/lambdaAsSAMInterfaceWithAnnotation.kt b/analysis/low-level-api-fir/testData/getOrBuildFir/wholeDeclaration/lambdaAsSAMInterfaceWithAnnotation.kt
new file mode 100644
index 00000000000..7f695fbf96b
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/wholeDeclaration/lambdaAsSAMInterfaceWithAnnotation.kt
@@ -0,0 +1,19 @@
+package foo
+
+class Arg
+
+@Target(AnnotationTarget.TYPE)
+annotation class Anno(val position: String)
+const val constant = 0
+
+fun interface Foo {
+ fun foo(a: @Anno("foo param type $constant") Arg): @Anno("foo return type $constant") Arg
+}
+
+fun testMe(f: @Anno("testMe param type $constant") Foo) {}
+
+
+fun resolveMe() {
+ testMe { b -> b }
+}
+
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/wholeDeclaration/lambdaAsSAMInterfaceWithAnnotation.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/wholeDeclaration/lambdaAsSAMInterfaceWithAnnotation.txt
new file mode 100644
index 00000000000..e87ca0b90fc
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/wholeDeclaration/lambdaAsSAMInterfaceWithAnnotation.txt
@@ -0,0 +1,45 @@
+KT element: KtNamedFunction
+FIR element: FirSimpleFunctionImpl
+FIR source kind: KtRealSourceElementKind
+
+FIR element rendered:
+public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
+ R|foo/testMe|( = [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@R|foo/Anno|((String(testMe param type ), constant#)) foo/Foo] testMe@fun ([ResolvedTo(BODY_RESOLVE)] b: R|@R|foo/Anno|(position = (String(foo param type ), R|foo/constant|)) foo/Arg|): R|@R|foo/Anno|(position = (String(foo return type ), R|foo/constant|)) foo/Arg| {
+ ^ R|/b|
+ }
+ )
+}
+
+FIR FILE:
+FILE: [ResolvedTo(IMPORTS)] lambdaAsSAMInterfaceWithAnnotation.kt
+ package foo
+
+ public? final? [ResolvedTo(RAW_FIR)] class Arg : R|kotlin/Any| {
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Arg] constructor(): R|foo/Arg| {
+ LAZY_super
+ }
+
+ }
+ @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=foo/Anno.position] position: R|kotlin/String|): R|foo/Anno| {
+ LAZY_super
+ }
+
+ public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position|
+ public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
+
+ }
+ public final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val constant: R|kotlin/Int| = Int(0)
+ public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/Int|
+ public abstract fun [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| {
+ public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] a: R|@R|foo/Anno|((String(foo param type ), R|foo/constant|)) foo/Arg|): R|@R|foo/Anno|((String(foo return type ), R|foo/constant|)) foo/Arg|
+
+ }
+ public final [ResolvedTo(CONTRACTS)] fun testMe([ResolvedTo(CONTRACTS)] f: R|@R|foo/Anno|((String(testMe param type ), constant#)) foo/Foo|): R|kotlin/Unit| {
+ }
+ public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
+ R|foo/testMe|( = [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@R|foo/Anno|((String(testMe param type ), constant#)) foo/Foo] testMe@fun ([ResolvedTo(BODY_RESOLVE)] b: R|@R|foo/Anno|(position = (String(foo param type ), R|foo/constant|)) foo/Arg|): R|@R|foo/Anno|(position = (String(foo return type ), R|foo/constant|)) foo/Arg| {
+ ^ R|/b|
+ }
+ )
+ }
diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.after.txt
new file mode 100644
index 00000000000..064ebfea2f2
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.after.txt
@@ -0,0 +1,37 @@
+@R|second/Anno|(int = R|second/constant|) second/Base
+ context -> FirRegularClassSymbol second/MyClass
+ anchor -> [FirRegularClassSymbol second/MyClass]
+
+FILE: [ResolvedTo(IMPORTS)] delegateFieldWithAnnotationClash.kt
+ @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/Anno.int] int: R|kotlin/Int|): R|second/Anno| {
+ LAZY_super
+ }
+
+ public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val int: R|kotlin/Int| = R|/int|
+ public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/Int|
+
+ }
+ public? final? [ResolvedTo(SUPER_TYPES)] interface Base : R|kotlin/Any| {
+ }
+ public? final? [ResolvedTo(RAW_FIR)] fun bar(): Base { LAZY_BLOCK }
+ public final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val constant: R|kotlin/Int| = Int(0)
+ public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/Int|
+ public final [ResolvedTo(ANNOTATION_ARGUMENTS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|@R|second/Anno|(int = R|second/constant|) second/Base| {
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|second/MyClass| {
+ LAZY_super<>
+ }
+
+ private final [ResolvedTo(RAW_FIR)] field $$delegate_0: @R|second/Anno|[Types](int = R|second/constant|) Base = LAZY_EXPRESSION
+
+ @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.Anno.string] string: String): R|second/MyClass.Anno| {
+ LAZY_super
+ }
+
+ public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val string: String = R|/string|
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
+
+ }
+
+ }
diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.before.txt
new file mode 100644
index 00000000000..74d96674f23
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.before.txt
@@ -0,0 +1,37 @@
+@R|second/Anno|(LAZY_EXPRESSION) second/Base
+ context -> FirRegularClassSymbol second/MyClass
+ anchor -> [FirRegularClassSymbol second/MyClass]
+
+FILE: [ResolvedTo(IMPORTS)] delegateFieldWithAnnotationClash.kt
+ @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/Anno.int] int: Int): R|second/Anno| {
+ LAZY_super
+ }
+
+ public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val int: Int = R|/int|
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): Int
+
+ }
+ public? final? [ResolvedTo(SUPER_TYPES)] interface Base : R|kotlin/Any| {
+ }
+ public? final? [ResolvedTo(RAW_FIR)] fun bar(): Base { LAZY_BLOCK }
+ public? final? const [ResolvedTo(RAW_FIR)] val constant: = LAZY_EXPRESSION
+ public? [ResolvedTo(RAW_FIR)] get():
+ public? final? [ResolvedTo(TYPES)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|@R|second/Anno|(LAZY_EXPRESSION) second/Base| {
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|second/MyClass| {
+ LAZY_super<>
+ }
+
+ private final [ResolvedTo(RAW_FIR)] field $$delegate_0: @R|second/Anno|[Unresolved](LAZY_EXPRESSION) Base = LAZY_EXPRESSION
+
+ @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.Anno.string] string: String): R|second/MyClass.Anno| {
+ LAZY_super
+ }
+
+ public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val string: String = R|/string|
+ public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
+
+ }
+
+ }
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/classes/delegateFieldWithAnnotationClash.kt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.kt
similarity index 100%
rename from analysis/low-level-api-fir/testData/lazyResolve/classes/delegateFieldWithAnnotationClash.kt
rename to analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.kt
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/classes/delegateFieldWithAnnotationClash.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.lazyResolve.txt
similarity index 100%
rename from analysis/low-level-api-fir/testData/lazyResolve/classes/delegateFieldWithAnnotationClash.txt
rename to analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClash.lazyResolve.txt
diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClashScript.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClashScript.after.txt
new file mode 100644
index 00000000000..0c747dfaa61
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/delegateFieldWithAnnotationClashScript.after.txt
@@ -0,0 +1,45 @@
+@R|second/Anno|(int = R|second/constant|) second/Base
+ context -> FirRegularClassSymbol second/MyClass
+ anchor -> [FirRegularClassSymbol second/MyClass]
+
+FILE: [ResolvedTo(IMPORTS)] delegateFieldWithAnnotationClashScript.kts
+ context(