FILE: positionalDestructuringFullForm.kt
    public final? data class Tuple : R|kotlin/Any| {
        public? [ContainingClassKey=Tuple] constructor([CorrespondingProperty=/Tuple.first] first: String, [CorrespondingProperty=/Tuple.second] second: Int): R|Tuple| {
            super<R|kotlin/Any|>()
        }

        public? final? [ComponentFunctionSymbolKey=/Tuple.component1, IsFromPrimaryConstructor=true] val first: String = R|<local>/first|
            public? [ContainingClassKey=Tuple] get(): String

        public? final? [ComponentFunctionSymbolKey=/Tuple.component2, IsFromPrimaryConstructor=true] val second: Int = R|<local>/second|
            public? [ContainingClassKey=Tuple] get(): Int

        public? final operator fun component1(): String

        public? final operator fun component2(): Int

        public? final fun copy(first: String = this@R|/Tuple|.R|/Tuple.first|, second: Int = this@R|/Tuple|.R|/Tuple.second|): R|Tuple|

    }
    public? final? fun declaration(x: Tuple): R|kotlin/Unit| {
        when () {
            Boolean(true) ->  {
                lval <destruct>: <implicit> = x#
                lval first: <implicit> = R|<local>/<destruct>|.component1#()
                lvar second: <implicit> = R|<local>/<destruct>|.component2#()
            }
        }

        when () {
            Boolean(true) ->  {
                lval <destruct>: <implicit> = x#
                lvar first: <implicit> = R|<local>/<destruct>|.component1#()
            }
        }

        when () {
            Boolean(true) ->  {
                lval <destruct>: <implicit> = x#
                lval first: String = R|<local>/<destruct>|.component1#()
            }
        }

    }
    public? final? fun loop(x: List<Tuple>): R|kotlin/Unit| {
         {
            lval <iterator>: <implicit> = x#.iterator#()
            while(R|<local>/<iterator>|.hasNext#()) {
                [IsForLoopParameterProperty=true] lval <destruct>: <implicit> = R|<local>/<iterator>|.next#()
                lval first: <implicit> = R|<local>/<destruct>|.component1#()
                lval second: <implicit> = R|<local>/<destruct>|.component2#()
                 {
                }

            }

        }

         {
            lval <iterator>: <implicit> = x#.iterator#()
            while(R|<local>/<iterator>|.hasNext#()) {
                [IsForLoopParameterProperty=true] lval <destruct>: <implicit> = R|<local>/<iterator>|.next#()
                lval first: <implicit> = R|<local>/<destruct>|.component1#()
                 {
                }

            }

        }

         {
            lval <iterator>: <implicit> = x#.iterator#()
            while(R|<local>/<iterator>|.hasNext#()) {
                [IsForLoopParameterProperty=true] lval <destruct>: <implicit> = R|<local>/<iterator>|.next#()
                lval first: String = R|<local>/<destruct>|.component1#()
                 {
                }

            }

        }

    }
    public? final? fun lambda(): R|kotlin/Unit| {
        local final? fun foo(f: ( (Tuple) -> Unit )): R|kotlin/Unit|

        foo#(<L> = foo@fun <implicit>.<anonymous>(<destruct>: <implicit>): <implicit> <inline=Unknown>  {
            lval first: <implicit> = R|<local>/<destruct>|.component1#()
            lval second: <implicit> = R|<local>/<destruct>|.component2#()
             {
                ^@foo Unit
            }

        }
        )
        foo#(<L> = foo@fun <implicit>.<anonymous>(<destruct>: <implicit>): <implicit> <inline=Unknown>  {
            lval first: <implicit> = R|<local>/<destruct>|.component1#()
             {
                ^@foo Unit
            }

        }
        )
        foo#(<L> = foo@fun <implicit>.<anonymous>(<destruct>: <implicit>): <implicit> <inline=Unknown>  {
            lval first: String = R|<local>/<destruct>|.component1#()
             {
                ^@foo Unit
            }

        }
        )
    }
