Analysis attempt #0
KT element: KtProperty
KT element text:
val x = foo.value
FIR element: FirPropertyImpl
FIR source kind: KtRealSourceElementKind

FIR element rendered:
[ResolvedTo(BODY_RESOLVE)] lval x: R|Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>| = R|<local>/foo|.R|SubstitutionOverride</Foo.value: R|Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>|>|

FIR FILE:
FILE: [ResolvedTo(RAW_FIR)] anno.kt
    @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
        public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| {
            LAZY_super<R|kotlin/Any|>
        }

    }
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] first.kt
    public final [ResolvedTo(STATUS)] class Foo<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
        public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] [CorrespondingProperty=/Foo.value] value: R|T|): R|Foo<T>| {
            LAZY_super<R|kotlin/Any|>
        }

        public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val value: R|T| = R|<local>/value|
            public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|T|

    }
    public? final? [ResolvedTo(RAW_FIR)] fun test([ResolvedTo(RAW_FIR)] foo: Foo<Foo<Foo<Foo<Foo<Foo<@Anno[Unresolved]() String>>>>>>): R|kotlin/Unit| { LAZY_BLOCK }
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] second.kt
    public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] foo: R|Foo<Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>>|): R|kotlin/Unit| {
        [ResolvedTo(BODY_RESOLVE)] lval x: R|Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>| = R|<local>/foo|.R|SubstitutionOverride</Foo.value: R|Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>|>|
    }

=====

Analysis attempt #1
KT element: KtProperty
KT element text:
val x = foo.value
FIR element: FirPropertyImpl
FIR source kind: KtRealSourceElementKind

FIR element rendered:
[ResolvedTo(BODY_RESOLVE)] lval x: R|Foo<Foo<Foo<Foo<Foo<@R|Anno|()  kotlin/String>>>>>| = R|<local>/foo|.R|SubstitutionOverride</Foo.value: R|Foo<Foo<Foo<Foo<Foo<@R|Anno|()  kotlin/String>>>>>|>|

FIR FILE:
FILE: [ResolvedTo(IMPORTS)] anno.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(): R|Anno| {
            LAZY_super<R|kotlin/Any|>
        }

    }
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] first.kt
    public final [ResolvedTo(STATUS)] class Foo<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
        public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] [CorrespondingProperty=/Foo.value] value: R|T|): R|Foo<T>| {
            LAZY_super<R|kotlin/Any|>
        }

        public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val value: R|T| = R|<local>/value|
            public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|T|

    }
    public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] foo: R|Foo<Foo<Foo<Foo<Foo<Foo<@R|Anno|()  kotlin/String>>>>>>|): R|kotlin/Unit| {
        [ResolvedTo(BODY_RESOLVE)] lval x: R|Foo<Foo<Foo<Foo<Foo<@R|Anno|()  kotlin/String>>>>>| = R|<local>/foo|.R|SubstitutionOverride</Foo.value: R|Foo<Foo<Foo<Foo<Foo<@R|Anno|()  kotlin/String>>>>>|>|
    }
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] second.kt
    public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] foo: R|Foo<Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>>|): R|kotlin/Unit| {
        [ResolvedTo(BODY_RESOLVE)] lval x: R|Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>| = R|<local>/foo|.R|SubstitutionOverride</Foo.value: R|Foo<Foo<Foo<Foo<Foo<kotlin/String>>>>>|>|
    }
