/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.compose.compiler.plugins.kotlin

import org.intellij.lang.annotations.Language
import org.junit.Test

class DefaultParamTransformTests : ComposeIrTransformTest() {
    private fun defaultParams(
        @Language("kotlin")
        unchecked: String,
        @Language("kotlin")
        checked: String,
        expectedTransformed: String,
        dumpTree: Boolean = false
    ) = verifyComposeIrTransform(
        """
            import androidx.compose.runtime.Composable
            import androidx.compose.runtime.NonRestartableComposable

            $checked
        """.trimIndent(),
        expectedTransformed,
        """
            import androidx.compose.runtime.Composable
            import androidx.compose.runtime.NonRestartableComposable

            $unchecked

            fun used(x: Any?) {}
        """.trimIndent(),
        dumpTree = dumpTree
    )

    @Test
    fun testComposableWithAndWithoutDefaultParams(): Unit = defaultParams(
        """
            @Composable fun A(x: Int) { }
            @Composable fun B(x: Int = 1) { }
        """,
        """
            @Composable
            fun Test() {
                A(1)
                B()
                B(2)
            }
        """,
        """
            @Composable
            fun Test(%composer: Composer?, %changed: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Test)<A(1)>,<B()>,<B(2)>:Test.kt")
              if (%changed !== 0 || !%composer.skipping) {
                A(1, %composer, 0b0110)
                B(0, %composer, 0, 0b0001)
                B(2, %composer, 0b0110, 0)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Test(%composer, %changed or 0b0001)
              }
            }
        """
    )

    @Test
    fun testInlineClassDefaultParameter(): Unit = defaultParams(
        """
            inline class Foo(val value: Int)
        """,
        """
            @Composable
            fun Example(foo: Foo = Foo(0)) {
                print(foo)
            }
            @Composable
            fun Test() {
                Example()
            }
        """,
        """
            @Composable
            fun Example(foo: Foo, %composer: Composer?, %changed: Int, %default: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Example)P(0:Foo):Test.kt")
              val %dirty = %changed
              if (%default and 0b0001 !== 0) {
                %dirty = %dirty or 0b0110
              } else if (%changed and 0b1110 === 0) {
                %dirty = %dirty or if (%composer.changed(<unsafe-coerce>(foo))) 0b0100 else 0b0010
              }
              if (%dirty and 0b1011 !== 0b0010 || !%composer.skipping) {
                if (%default and 0b0001 !== 0) {
                  foo = Foo(0)
                }
                print(foo)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Example(foo, %composer, %changed or 0b0001, %default)
              }
            }
            @Composable
            fun Test(%composer: Composer?, %changed: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Test)<Exampl...>:Test.kt")
              if (%changed !== 0 || !%composer.skipping) {
                Example(<unsafe-coerce>(0), %composer, 0, 0b0001)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Test(%composer, %changed or 0b0001)
              }
            }
        """
    )

    @Test
    fun testParameterHoles(): Unit = defaultParams(
        """
            @Composable fun A(a: Int = 0, b: Int = 1, c: Int = 2, d: Int = 3, e: Int = 4) { }
        """,
        """
            @Composable
            fun Test() {
                A(0, 1, 2)
                A(a = 0, c = 2)
            }
        """,
        """
            @Composable
            fun Test(%composer: Composer?, %changed: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Test)<A(0,>,<A(a>:Test.kt")
              if (%changed !== 0 || !%composer.skipping) {
                A(0, 1, 2, 0, 0, %composer, 0b000110110110, 0b00011000)
                A(0, 0, 2, 0, 0, %composer, 0b000110000110, 0b00011010)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Test(%composer, %changed or 0b0001)
              }
            }
        """
    )

    @Test
    fun testUnusedDefaultComposableLambda(): Unit = defaultParams(
        """
        """,
        """
            inline fun Bar(unused: @Composable () -> Unit = { }) {}
            fun Foo() { Bar() }
        """,
        """
            fun Bar(unused: Function2<Composer, Int, Unit> = { %composer: Composer?, %changed: Int ->
              %composer.startReplaceableGroup(<>)
              sourceInformation(%composer, "C:Test.kt")
              if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
                Unit
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endReplaceableGroup()
            }
            ) { }
            fun Foo() {
              Bar()
            }
        """
    )

    @Test
    fun testNonStaticDefaultExpressions(): Unit = defaultParams(
        """
            fun makeInt(): Int = 123
        """,
        """
            @Composable
            fun Test(x: Int = makeInt()) {
                used(x)
            }
        """,
        """
            @Composable
            fun Test(x: Int, %composer: Composer?, %changed: Int, %default: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Test):Test.kt")
              val %dirty = %changed
              if (%changed and 0b1110 === 0) {
                %dirty = %dirty or if (%default and 0b0001 === 0 && %composer.changed(x)) 0b0100 else 0b0010
              }
              if (%dirty and 0b1011 !== 0b0010 || !%composer.skipping) {
                %composer.startDefaults()
                if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
                  if (%default and 0b0001 !== 0) {
                    x = makeInt()
                    %dirty = %dirty and 0b1110.inv()
                  }
                } else {
                  %composer.skipToGroupEnd()
                  if (%default and 0b0001 !== 0) {
                    %dirty = %dirty and 0b1110.inv()
                  }
                }
                %composer.endDefaults()
                used(x)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Test(x, %composer, %changed or 0b0001, %default)
              }
            }
        """
    )

    @Test
    fun testEarlierParameterReferences(): Unit = defaultParams(
        """
        """,
        """
            @Composable
            fun A(a: Int = 0, b: Int = a + 1) {
                print(a)
                print(b)
            }
        """,
        """
            @Composable
            fun A(a: Int, b: Int, %composer: Composer?, %changed: Int, %default: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(A):Test.kt")
              val %dirty = %changed
              if (%default and 0b0001 !== 0) {
                %dirty = %dirty or 0b0110
              } else if (%changed and 0b1110 === 0) {
                %dirty = %dirty or if (%composer.changed(a)) 0b0100 else 0b0010
              }
              if (%changed and 0b01110000 === 0) {
                %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(b)) 0b00100000 else 0b00010000
              }
              if (%dirty and 0b01011011 !== 0b00010010 || !%composer.skipping) {
                %composer.startDefaults()
                if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
                  if (%default and 0b0001 !== 0) {
                    a = 0
                  }
                  if (%default and 0b0010 !== 0) {
                    b = a + 1
                    %dirty = %dirty and 0b01110000.inv()
                  }
                } else {
                  %composer.skipToGroupEnd()
                  if (%default and 0b0010 !== 0) {
                    %dirty = %dirty and 0b01110000.inv()
                  }
                }
                %composer.endDefaults()
                print(a)
                print(b)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                A(a, b, %composer, %changed or 0b0001, %default)
              }
            }
        """
    )

    @Test
    fun test30Parameters(): Unit = defaultParams(
        """
        """,
        """
            @Composable
            fun Example(
                a00: Int = 0,
                a01: Int = 0,
                a02: Int = 0,
                a03: Int = 0,
                a04: Int = 0,
                a05: Int = 0,
                a06: Int = 0,
                a07: Int = 0,
                a08: Int = 0,
                a09: Int = 0,
                a10: Int = 0,
                a11: Int = 0,
                a12: Int = 0,
                a13: Int = 0,
                a14: Int = 0,
                a15: Int = 0,
                a16: Int = 0,
                a17: Int = 0,
                a18: Int = 0,
                a19: Int = 0,
                a20: Int = 0,
                a21: Int = 0,
                a22: Int = 0,
                a23: Int = 0,
                a24: Int = 0,
                a25: Int = 0,
                a26: Int = 0,
                a27: Int = 0,
                a28: Int = 0,
                a29: Int = 0,
                a30: Int = 0
            ) {
                used(a00)
                used(a01)
                used(a02)
                used(a03)
                used(a04)
                used(a05)
                used(a06)
                used(a07)
                used(a08)
                used(a09)
                used(a10)
                used(a11)
                used(a12)
                used(a13)
                used(a14)
                used(a15)
                used(a16)
                used(a17)
                used(a18)
                used(a19)
                used(a20)
                used(a21)
                used(a22)
                used(a23)
                used(a24)
                used(a25)
                used(a26)
                used(a27)
                used(a28)
                used(a29)
                used(a30)
            }
        """,
        """
            @Composable
            fun Example(a00: Int, a01: Int, a02: Int, a03: Int, a04: Int, a05: Int, a06: Int, a07: Int, a08: Int, a09: Int, a10: Int, a11: Int, a12: Int, a13: Int, a14: Int, a15: Int, a16: Int, a17: Int, a18: Int, a19: Int, a20: Int, a21: Int, a22: Int, a23: Int, a24: Int, a25: Int, a26: Int, a27: Int, a28: Int, a29: Int, a30: Int, %composer: Composer?, %changed: Int, %changed1: Int, %changed2: Int, %changed3: Int, %default: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Example):Test.kt")
              val %dirty = %changed
              val %dirty1 = %changed1
              val %dirty2 = %changed2
              val %dirty3 = %changed3
              if (%default and 0b0001 !== 0) {
                %dirty = %dirty or 0b0110
              } else if (%changed and 0b1110 === 0) {
                %dirty = %dirty or if (%composer.changed(a00)) 0b0100 else 0b0010
              }
              if (%default and 0b0010 !== 0) {
                %dirty = %dirty or 0b00110000
              } else if (%changed and 0b01110000 === 0) {
                %dirty = %dirty or if (%composer.changed(a01)) 0b00100000 else 0b00010000
              }
              if (%default and 0b0100 !== 0) {
                %dirty = %dirty or 0b000110000000
              } else if (%changed and 0b001110000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a02)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b1000 !== 0) {
                %dirty = %dirty or 0b110000000000
              } else if (%changed and 0b0001110000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a03)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b00010000 !== 0) {
                %dirty = %dirty or 0b0110000000000000
              } else if (%changed and 0b1110000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a04)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b00100000 !== 0) {
                %dirty = %dirty or 0b00110000000000000000
              } else if (%changed and 0b01110000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a05)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b01000000 !== 0) {
                %dirty = %dirty or 0b000110000000000000000000
              } else if (%changed and 0b001110000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a06)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b10000000 !== 0) {
                %dirty = %dirty or 0b110000000000000000000000
              } else if (%changed and 0b0001110000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a07)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b000100000000 !== 0) {
                %dirty = %dirty or 0b0110000000000000000000000000
              } else if (%changed and 0b1110000000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a08)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b001000000000 !== 0) {
                %dirty = %dirty or 0b00110000000000000000000000000000
              } else if (%changed and 0b01110000000000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a09)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b010000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110
              } else if (%changed1 and 0b1110 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a10)) 0b0100 else 0b0010
              }
              if (%default and 0b100000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000
              } else if (%changed1 and 0b01110000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a11)) 0b00100000 else 0b00010000
              }
              if (%default and 0b0001000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b000110000000
              } else if (%changed1 and 0b001110000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a12)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b0010000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b110000000000
              } else if (%changed1 and 0b0001110000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a13)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b0100000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110000000000000
              } else if (%changed1 and 0b1110000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a14)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b1000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000000000000000
              } else if (%changed1 and 0b01110000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a15)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b00010000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b000110000000000000000000
              } else if (%changed1 and 0b001110000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a16)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b00100000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b110000000000000000000000
              } else if (%changed1 and 0b0001110000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a17)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b01000000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110000000000000000000000000
              } else if (%changed1 and 0b1110000000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a18)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b10000000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000000000000000000000000000
              } else if (%changed1 and 0b01110000000000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a19)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b000100000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110
              } else if (%changed2 and 0b1110 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a20)) 0b0100 else 0b0010
              }
              if (%default and 0b001000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000
              } else if (%changed2 and 0b01110000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a21)) 0b00100000 else 0b00010000
              }
              if (%default and 0b010000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b000110000000
              } else if (%changed2 and 0b001110000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a22)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b100000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b110000000000
              } else if (%changed2 and 0b0001110000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a23)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b0001000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110000000000000
              } else if (%changed2 and 0b1110000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a24)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b0010000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000000000000000
              } else if (%changed2 and 0b01110000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a25)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b0100000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b000110000000000000000000
              } else if (%changed2 and 0b001110000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a26)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b1000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b110000000000000000000000
              } else if (%changed2 and 0b0001110000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a27)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b00010000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110000000000000000000000000
              } else if (%changed2 and 0b1110000000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a28)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b00100000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000000000000000000000000000
              } else if (%changed2 and 0b01110000000000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a29)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b01000000000000000000000000000000 !== 0) {
                %dirty3 = %dirty3 or 0b0110
              } else if (%changed3 and 0b1110 === 0) {
                %dirty3 = %dirty3 or if (%composer.changed(a30)) 0b0100 else 0b0010
              }
              if (%dirty and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty1 and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty2 and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty3 and 0b1011 !== 0b0010 || !%composer.skipping) {
                if (%default and 0b0001 !== 0) {
                  a00 = 0
                }
                if (%default and 0b0010 !== 0) {
                  a01 = 0
                }
                if (%default and 0b0100 !== 0) {
                  a02 = 0
                }
                if (%default and 0b1000 !== 0) {
                  a03 = 0
                }
                if (%default and 0b00010000 !== 0) {
                  a04 = 0
                }
                if (%default and 0b00100000 !== 0) {
                  a05 = 0
                }
                if (%default and 0b01000000 !== 0) {
                  a06 = 0
                }
                if (%default and 0b10000000 !== 0) {
                  a07 = 0
                }
                if (%default and 0b000100000000 !== 0) {
                  a08 = 0
                }
                if (%default and 0b001000000000 !== 0) {
                  a09 = 0
                }
                if (%default and 0b010000000000 !== 0) {
                  a10 = 0
                }
                if (%default and 0b100000000000 !== 0) {
                  a11 = 0
                }
                if (%default and 0b0001000000000000 !== 0) {
                  a12 = 0
                }
                if (%default and 0b0010000000000000 !== 0) {
                  a13 = 0
                }
                if (%default and 0b0100000000000000 !== 0) {
                  a14 = 0
                }
                if (%default and 0b1000000000000000 !== 0) {
                  a15 = 0
                }
                if (%default and 0b00010000000000000000 !== 0) {
                  a16 = 0
                }
                if (%default and 0b00100000000000000000 !== 0) {
                  a17 = 0
                }
                if (%default and 0b01000000000000000000 !== 0) {
                  a18 = 0
                }
                if (%default and 0b10000000000000000000 !== 0) {
                  a19 = 0
                }
                if (%default and 0b000100000000000000000000 !== 0) {
                  a20 = 0
                }
                if (%default and 0b001000000000000000000000 !== 0) {
                  a21 = 0
                }
                if (%default and 0b010000000000000000000000 !== 0) {
                  a22 = 0
                }
                if (%default and 0b100000000000000000000000 !== 0) {
                  a23 = 0
                }
                if (%default and 0b0001000000000000000000000000 !== 0) {
                  a24 = 0
                }
                if (%default and 0b0010000000000000000000000000 !== 0) {
                  a25 = 0
                }
                if (%default and 0b0100000000000000000000000000 !== 0) {
                  a26 = 0
                }
                if (%default and 0b1000000000000000000000000000 !== 0) {
                  a27 = 0
                }
                if (%default and 0b00010000000000000000000000000000 !== 0) {
                  a28 = 0
                }
                if (%default and 0b00100000000000000000000000000000 !== 0) {
                  a29 = 0
                }
                if (%default and 0b01000000000000000000000000000000 !== 0) {
                  a30 = 0
                }
                used(a00)
                used(a01)
                used(a02)
                used(a03)
                used(a04)
                used(a05)
                used(a06)
                used(a07)
                used(a08)
                used(a09)
                used(a10)
                used(a11)
                used(a12)
                used(a13)
                used(a14)
                used(a15)
                used(a16)
                used(a17)
                used(a18)
                used(a19)
                used(a20)
                used(a21)
                used(a22)
                used(a23)
                used(a24)
                used(a25)
                used(a26)
                used(a27)
                used(a28)
                used(a29)
                used(a30)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Example(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, %composer, %changed or 0b0001, %changed1, %changed2, %changed3, %default)
              }
            }
        """
    )

    @Test
    fun test31Parameters(): Unit = defaultParams(
        """
        """,
        """
            @Composable
            fun Example(
                a00: Int = 0,
                a01: Int = 0,
                a02: Int = 0,
                a03: Int = 0,
                a04: Int = 0,
                a05: Int = 0,
                a06: Int = 0,
                a07: Int = 0,
                a08: Int = 0,
                a09: Int = 0,
                a10: Int = 0,
                a11: Int = 0,
                a12: Int = 0,
                a13: Int = 0,
                a14: Int = 0,
                a15: Int = 0,
                a16: Int = 0,
                a17: Int = 0,
                a18: Int = 0,
                a19: Int = 0,
                a20: Int = 0,
                a21: Int = 0,
                a22: Int = 0,
                a23: Int = 0,
                a24: Int = 0,
                a25: Int = 0,
                a26: Int = 0,
                a27: Int = 0,
                a28: Int = 0,
                a29: Int = 0,
                a30: Int = 0,
                a31: Int = 0
            ) {
                used(a00)
                used(a01)
                used(a02)
                used(a03)
                used(a04)
                used(a05)
                used(a06)
                used(a07)
                used(a08)
                used(a09)
                used(a10)
                used(a11)
                used(a12)
                used(a13)
                used(a14)
                used(a15)
                used(a16)
                used(a17)
                used(a18)
                used(a19)
                used(a20)
                used(a21)
                used(a22)
                used(a23)
                used(a24)
                used(a25)
                used(a26)
                used(a27)
                used(a28)
                used(a29)
                used(a30)
                used(a31)
            }
        """,
        """
            @Composable
            fun Example(a00: Int, a01: Int, a02: Int, a03: Int, a04: Int, a05: Int, a06: Int, a07: Int, a08: Int, a09: Int, a10: Int, a11: Int, a12: Int, a13: Int, a14: Int, a15: Int, a16: Int, a17: Int, a18: Int, a19: Int, a20: Int, a21: Int, a22: Int, a23: Int, a24: Int, a25: Int, a26: Int, a27: Int, a28: Int, a29: Int, a30: Int, a31: Int, %composer: Composer?, %changed: Int, %changed1: Int, %changed2: Int, %changed3: Int, %default: Int, %default1: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Example):Test.kt")
              val %dirty = %changed
              val %dirty1 = %changed1
              val %dirty2 = %changed2
              val %dirty3 = %changed3
              if (%default and 0b0001 !== 0) {
                %dirty = %dirty or 0b0110
              } else if (%changed and 0b1110 === 0) {
                %dirty = %dirty or if (%composer.changed(a00)) 0b0100 else 0b0010
              }
              if (%default and 0b0010 !== 0) {
                %dirty = %dirty or 0b00110000
              } else if (%changed and 0b01110000 === 0) {
                %dirty = %dirty or if (%composer.changed(a01)) 0b00100000 else 0b00010000
              }
              if (%default and 0b0100 !== 0) {
                %dirty = %dirty or 0b000110000000
              } else if (%changed and 0b001110000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a02)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b1000 !== 0) {
                %dirty = %dirty or 0b110000000000
              } else if (%changed and 0b0001110000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a03)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b00010000 !== 0) {
                %dirty = %dirty or 0b0110000000000000
              } else if (%changed and 0b1110000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a04)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b00100000 !== 0) {
                %dirty = %dirty or 0b00110000000000000000
              } else if (%changed and 0b01110000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a05)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b01000000 !== 0) {
                %dirty = %dirty or 0b000110000000000000000000
              } else if (%changed and 0b001110000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a06)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b10000000 !== 0) {
                %dirty = %dirty or 0b110000000000000000000000
              } else if (%changed and 0b0001110000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a07)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b000100000000 !== 0) {
                %dirty = %dirty or 0b0110000000000000000000000000
              } else if (%changed and 0b1110000000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a08)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b001000000000 !== 0) {
                %dirty = %dirty or 0b00110000000000000000000000000000
              } else if (%changed and 0b01110000000000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a09)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b010000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110
              } else if (%changed1 and 0b1110 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a10)) 0b0100 else 0b0010
              }
              if (%default and 0b100000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000
              } else if (%changed1 and 0b01110000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a11)) 0b00100000 else 0b00010000
              }
              if (%default and 0b0001000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b000110000000
              } else if (%changed1 and 0b001110000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a12)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b0010000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b110000000000
              } else if (%changed1 and 0b0001110000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a13)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b0100000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110000000000000
              } else if (%changed1 and 0b1110000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a14)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b1000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000000000000000
              } else if (%changed1 and 0b01110000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a15)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b00010000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b000110000000000000000000
              } else if (%changed1 and 0b001110000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a16)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b00100000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b110000000000000000000000
              } else if (%changed1 and 0b0001110000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a17)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b01000000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110000000000000000000000000
              } else if (%changed1 and 0b1110000000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a18)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b10000000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000000000000000000000000000
              } else if (%changed1 and 0b01110000000000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a19)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b000100000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110
              } else if (%changed2 and 0b1110 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a20)) 0b0100 else 0b0010
              }
              if (%default and 0b001000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000
              } else if (%changed2 and 0b01110000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a21)) 0b00100000 else 0b00010000
              }
              if (%default and 0b010000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b000110000000
              } else if (%changed2 and 0b001110000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a22)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b100000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b110000000000
              } else if (%changed2 and 0b0001110000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a23)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b0001000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110000000000000
              } else if (%changed2 and 0b1110000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a24)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b0010000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000000000000000
              } else if (%changed2 and 0b01110000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a25)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b0100000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b000110000000000000000000
              } else if (%changed2 and 0b001110000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a26)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b1000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b110000000000000000000000
              } else if (%changed2 and 0b0001110000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a27)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b00010000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110000000000000000000000000
              } else if (%changed2 and 0b1110000000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a28)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b00100000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000000000000000000000000000
              } else if (%changed2 and 0b01110000000000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a29)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b01000000000000000000000000000000 !== 0) {
                %dirty3 = %dirty3 or 0b0110
              } else if (%changed3 and 0b1110 === 0) {
                %dirty3 = %dirty3 or if (%composer.changed(a30)) 0b0100 else 0b0010
              }
              if (%default1 and 0b0001 !== 0) {
                %dirty3 = %dirty3 or 0b00110000
              } else if (%changed3 and 0b01110000 === 0) {
                %dirty3 = %dirty3 or if (%composer.changed(a31)) 0b00100000 else 0b00010000
              }
              if (%dirty and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty1 and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty2 and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty3 and 0b01011011 !== 0b00010010 || !%composer.skipping) {
                if (%default and 0b0001 !== 0) {
                  a00 = 0
                }
                if (%default and 0b0010 !== 0) {
                  a01 = 0
                }
                if (%default and 0b0100 !== 0) {
                  a02 = 0
                }
                if (%default and 0b1000 !== 0) {
                  a03 = 0
                }
                if (%default and 0b00010000 !== 0) {
                  a04 = 0
                }
                if (%default and 0b00100000 !== 0) {
                  a05 = 0
                }
                if (%default and 0b01000000 !== 0) {
                  a06 = 0
                }
                if (%default and 0b10000000 !== 0) {
                  a07 = 0
                }
                if (%default and 0b000100000000 !== 0) {
                  a08 = 0
                }
                if (%default and 0b001000000000 !== 0) {
                  a09 = 0
                }
                if (%default and 0b010000000000 !== 0) {
                  a10 = 0
                }
                if (%default and 0b100000000000 !== 0) {
                  a11 = 0
                }
                if (%default and 0b0001000000000000 !== 0) {
                  a12 = 0
                }
                if (%default and 0b0010000000000000 !== 0) {
                  a13 = 0
                }
                if (%default and 0b0100000000000000 !== 0) {
                  a14 = 0
                }
                if (%default and 0b1000000000000000 !== 0) {
                  a15 = 0
                }
                if (%default and 0b00010000000000000000 !== 0) {
                  a16 = 0
                }
                if (%default and 0b00100000000000000000 !== 0) {
                  a17 = 0
                }
                if (%default and 0b01000000000000000000 !== 0) {
                  a18 = 0
                }
                if (%default and 0b10000000000000000000 !== 0) {
                  a19 = 0
                }
                if (%default and 0b000100000000000000000000 !== 0) {
                  a20 = 0
                }
                if (%default and 0b001000000000000000000000 !== 0) {
                  a21 = 0
                }
                if (%default and 0b010000000000000000000000 !== 0) {
                  a22 = 0
                }
                if (%default and 0b100000000000000000000000 !== 0) {
                  a23 = 0
                }
                if (%default and 0b0001000000000000000000000000 !== 0) {
                  a24 = 0
                }
                if (%default and 0b0010000000000000000000000000 !== 0) {
                  a25 = 0
                }
                if (%default and 0b0100000000000000000000000000 !== 0) {
                  a26 = 0
                }
                if (%default and 0b1000000000000000000000000000 !== 0) {
                  a27 = 0
                }
                if (%default and 0b00010000000000000000000000000000 !== 0) {
                  a28 = 0
                }
                if (%default and 0b00100000000000000000000000000000 !== 0) {
                  a29 = 0
                }
                if (%default and 0b01000000000000000000000000000000 !== 0) {
                  a30 = 0
                }
                if (%default1 and 0b0001 !== 0) {
                  a31 = 0
                }
                used(a00)
                used(a01)
                used(a02)
                used(a03)
                used(a04)
                used(a05)
                used(a06)
                used(a07)
                used(a08)
                used(a09)
                used(a10)
                used(a11)
                used(a12)
                used(a13)
                used(a14)
                used(a15)
                used(a16)
                used(a17)
                used(a18)
                used(a19)
                used(a20)
                used(a21)
                used(a22)
                used(a23)
                used(a24)
                used(a25)
                used(a26)
                used(a27)
                used(a28)
                used(a29)
                used(a30)
                used(a31)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Example(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, %composer, %changed or 0b0001, %changed1, %changed2, %changed3, %default, %default1)
              }
            }
        """
    )

    @Test
    fun test31ParametersWithSomeUnstable(): Unit = defaultParams(
        """
            class Foo
        """,
        """
            @Composable
            fun Example(
                a00: Int = 0,
                a01: Int = 0,
                a02: Int = 0,
                a03: Int = 0,
                a04: Int = 0,
                a05: Int = 0,
                a06: Int = 0,
                a07: Int = 0,
                a08: Int = 0,
                a09: Foo = Foo(),
                a10: Int = 0,
                a11: Int = 0,
                a12: Int = 0,
                a13: Int = 0,
                a14: Int = 0,
                a15: Int = 0,
                a16: Int = 0,
                a17: Int = 0,
                a18: Int = 0,
                a19: Int = 0,
                a20: Int = 0,
                a21: Int = 0,
                a22: Int = 0,
                a23: Int = 0,
                a24: Int = 0,
                a25: Int = 0,
                a26: Int = 0,
                a27: Int = 0,
                a28: Int = 0,
                a29: Int = 0,
                a30: Int = 0,
                a31: Foo = Foo()
            ) {
                used(a00)
                used(a01)
                used(a02)
                used(a03)
                used(a04)
                used(a05)
                used(a06)
                used(a07)
                used(a08)
                used(a09)
                used(a10)
                used(a11)
                used(a12)
                used(a13)
                used(a14)
                used(a15)
                used(a16)
                used(a17)
                used(a18)
                used(a19)
                used(a20)
                used(a21)
                used(a22)
                used(a23)
                used(a24)
                used(a25)
                used(a26)
                used(a27)
                used(a28)
                used(a29)
                used(a30)
                used(a31)
            }
        """,
        """
            @Composable
            fun Example(a00: Int, a01: Int, a02: Int, a03: Int, a04: Int, a05: Int, a06: Int, a07: Int, a08: Int, a09: Foo?, a10: Int, a11: Int, a12: Int, a13: Int, a14: Int, a15: Int, a16: Int, a17: Int, a18: Int, a19: Int, a20: Int, a21: Int, a22: Int, a23: Int, a24: Int, a25: Int, a26: Int, a27: Int, a28: Int, a29: Int, a30: Int, a31: Foo?, %composer: Composer?, %changed: Int, %changed1: Int, %changed2: Int, %changed3: Int, %default: Int, %default1: Int) {
              %composer = %composer.startRestartGroup(<>)
              sourceInformation(%composer, "C(Example):Test.kt")
              val %dirty = %changed
              val %dirty1 = %changed1
              val %dirty2 = %changed2
              val %dirty3 = %changed3
              if (%default and 0b0001 !== 0) {
                %dirty = %dirty or 0b0110
              } else if (%changed and 0b1110 === 0) {
                %dirty = %dirty or if (%composer.changed(a00)) 0b0100 else 0b0010
              }
              if (%default and 0b0010 !== 0) {
                %dirty = %dirty or 0b00110000
              } else if (%changed and 0b01110000 === 0) {
                %dirty = %dirty or if (%composer.changed(a01)) 0b00100000 else 0b00010000
              }
              if (%default and 0b0100 !== 0) {
                %dirty = %dirty or 0b000110000000
              } else if (%changed and 0b001110000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a02)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b1000 !== 0) {
                %dirty = %dirty or 0b110000000000
              } else if (%changed and 0b0001110000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a03)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b00010000 !== 0) {
                %dirty = %dirty or 0b0110000000000000
              } else if (%changed and 0b1110000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a04)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b00100000 !== 0) {
                %dirty = %dirty or 0b00110000000000000000
              } else if (%changed and 0b01110000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a05)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b01000000 !== 0) {
                %dirty = %dirty or 0b000110000000000000000000
              } else if (%changed and 0b001110000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a06)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b10000000 !== 0) {
                %dirty = %dirty or 0b110000000000000000000000
              } else if (%changed and 0b0001110000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a07)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b000100000000 !== 0) {
                %dirty = %dirty or 0b0110000000000000000000000000
              } else if (%changed and 0b1110000000000000000000000000 === 0) {
                %dirty = %dirty or if (%composer.changed(a08)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%changed and 0b01110000000000000000000000000000 === 0) {
                %dirty = %dirty or if (%default and 0b001000000000 === 0 && %composer.changed(a09)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b010000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110
              } else if (%changed1 and 0b1110 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a10)) 0b0100 else 0b0010
              }
              if (%default and 0b100000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000
              } else if (%changed1 and 0b01110000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a11)) 0b00100000 else 0b00010000
              }
              if (%default and 0b0001000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b000110000000
              } else if (%changed1 and 0b001110000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a12)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b0010000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b110000000000
              } else if (%changed1 and 0b0001110000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a13)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b0100000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110000000000000
              } else if (%changed1 and 0b1110000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a14)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b1000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000000000000000
              } else if (%changed1 and 0b01110000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a15)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b00010000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b000110000000000000000000
              } else if (%changed1 and 0b001110000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a16)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b00100000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b110000000000000000000000
              } else if (%changed1 and 0b0001110000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a17)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b01000000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b0110000000000000000000000000
              } else if (%changed1 and 0b1110000000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a18)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b10000000000000000000 !== 0) {
                %dirty1 = %dirty1 or 0b00110000000000000000000000000000
              } else if (%changed1 and 0b01110000000000000000000000000000 === 0) {
                %dirty1 = %dirty1 or if (%composer.changed(a19)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b000100000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110
              } else if (%changed2 and 0b1110 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a20)) 0b0100 else 0b0010
              }
              if (%default and 0b001000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000
              } else if (%changed2 and 0b01110000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a21)) 0b00100000 else 0b00010000
              }
              if (%default and 0b010000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b000110000000
              } else if (%changed2 and 0b001110000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a22)) 0b000100000000 else 0b10000000
              }
              if (%default and 0b100000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b110000000000
              } else if (%changed2 and 0b0001110000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a23)) 0b100000000000 else 0b010000000000
              }
              if (%default and 0b0001000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110000000000000
              } else if (%changed2 and 0b1110000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a24)) 0b0100000000000000 else 0b0010000000000000
              }
              if (%default and 0b0010000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000000000000000
              } else if (%changed2 and 0b01110000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a25)) 0b00100000000000000000 else 0b00010000000000000000
              }
              if (%default and 0b0100000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b000110000000000000000000
              } else if (%changed2 and 0b001110000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a26)) 0b000100000000000000000000 else 0b10000000000000000000
              }
              if (%default and 0b1000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b110000000000000000000000
              } else if (%changed2 and 0b0001110000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a27)) 0b100000000000000000000000 else 0b010000000000000000000000
              }
              if (%default and 0b00010000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b0110000000000000000000000000
              } else if (%changed2 and 0b1110000000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a28)) 0b0100000000000000000000000000 else 0b0010000000000000000000000000
              }
              if (%default and 0b00100000000000000000000000000000 !== 0) {
                %dirty2 = %dirty2 or 0b00110000000000000000000000000000
              } else if (%changed2 and 0b01110000000000000000000000000000 === 0) {
                %dirty2 = %dirty2 or if (%composer.changed(a29)) 0b00100000000000000000000000000000 else 0b00010000000000000000000000000000
              }
              if (%default and 0b01000000000000000000000000000000 !== 0) {
                %dirty3 = %dirty3 or 0b0110
              } else if (%changed3 and 0b1110 === 0) {
                %dirty3 = %dirty3 or if (%composer.changed(a30)) 0b0100 else 0b0010
              }
              if (%changed3 and 0b01110000 === 0) {
                %dirty3 = %dirty3 or if (%default1 and 0b0001 === 0 && %composer.changed(a31)) 0b00100000 else 0b00010000
              }
              if (%dirty and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty1 and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty2 and 0b01011011011011011011011011011011 !== 0b00010010010010010010010010010010 || %dirty3 and 0b01011011 !== 0b00010010 || !%composer.skipping) {
                %composer.startDefaults()
                if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
                  if (%default and 0b0001 !== 0) {
                    a00 = 0
                  }
                  if (%default and 0b0010 !== 0) {
                    a01 = 0
                  }
                  if (%default and 0b0100 !== 0) {
                    a02 = 0
                  }
                  if (%default and 0b1000 !== 0) {
                    a03 = 0
                  }
                  if (%default and 0b00010000 !== 0) {
                    a04 = 0
                  }
                  if (%default and 0b00100000 !== 0) {
                    a05 = 0
                  }
                  if (%default and 0b01000000 !== 0) {
                    a06 = 0
                  }
                  if (%default and 0b10000000 !== 0) {
                    a07 = 0
                  }
                  if (%default and 0b000100000000 !== 0) {
                    a08 = 0
                  }
                  if (%default and 0b001000000000 !== 0) {
                    a09 = Foo()
                    %dirty = %dirty and 0b01110000000000000000000000000000.inv()
                  }
                  if (%default and 0b010000000000 !== 0) {
                    a10 = 0
                  }
                  if (%default and 0b100000000000 !== 0) {
                    a11 = 0
                  }
                  if (%default and 0b0001000000000000 !== 0) {
                    a12 = 0
                  }
                  if (%default and 0b0010000000000000 !== 0) {
                    a13 = 0
                  }
                  if (%default and 0b0100000000000000 !== 0) {
                    a14 = 0
                  }
                  if (%default and 0b1000000000000000 !== 0) {
                    a15 = 0
                  }
                  if (%default and 0b00010000000000000000 !== 0) {
                    a16 = 0
                  }
                  if (%default and 0b00100000000000000000 !== 0) {
                    a17 = 0
                  }
                  if (%default and 0b01000000000000000000 !== 0) {
                    a18 = 0
                  }
                  if (%default and 0b10000000000000000000 !== 0) {
                    a19 = 0
                  }
                  if (%default and 0b000100000000000000000000 !== 0) {
                    a20 = 0
                  }
                  if (%default and 0b001000000000000000000000 !== 0) {
                    a21 = 0
                  }
                  if (%default and 0b010000000000000000000000 !== 0) {
                    a22 = 0
                  }
                  if (%default and 0b100000000000000000000000 !== 0) {
                    a23 = 0
                  }
                  if (%default and 0b0001000000000000000000000000 !== 0) {
                    a24 = 0
                  }
                  if (%default and 0b0010000000000000000000000000 !== 0) {
                    a25 = 0
                  }
                  if (%default and 0b0100000000000000000000000000 !== 0) {
                    a26 = 0
                  }
                  if (%default and 0b1000000000000000000000000000 !== 0) {
                    a27 = 0
                  }
                  if (%default and 0b00010000000000000000000000000000 !== 0) {
                    a28 = 0
                  }
                  if (%default and 0b00100000000000000000000000000000 !== 0) {
                    a29 = 0
                  }
                  if (%default and 0b01000000000000000000000000000000 !== 0) {
                    a30 = 0
                  }
                  if (%default1 and 0b0001 !== 0) {
                    a31 = Foo()
                    %dirty3 = %dirty3 and 0b01110000.inv()
                  }
                } else {
                  %composer.skipToGroupEnd()
                  if (%default and 0b001000000000 !== 0) {
                    %dirty = %dirty and 0b01110000000000000000000000000000.inv()
                  }
                  if (%default1 and 0b0001 !== 0) {
                    %dirty3 = %dirty3 and 0b01110000.inv()
                  }
                }
                %composer.endDefaults()
                used(a00)
                used(a01)
                used(a02)
                used(a03)
                used(a04)
                used(a05)
                used(a06)
                used(a07)
                used(a08)
                used(a09)
                used(a10)
                used(a11)
                used(a12)
                used(a13)
                used(a14)
                used(a15)
                used(a16)
                used(a17)
                used(a18)
                used(a19)
                used(a20)
                used(a21)
                used(a22)
                used(a23)
                used(a24)
                used(a25)
                used(a26)
                used(a27)
                used(a28)
                used(a29)
                used(a30)
                used(a31)
              } else {
                %composer.skipToGroupEnd()
              }
              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
                Example(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, %composer, %changed or 0b0001, %changed1, %changed2, %changed3, %default, %default1)
              }
            }
        """
    )

    @Test
    fun testDefaultArgsForFakeOverridesSuperMethods(): Unit = defaultParams(
        """
        """,
        """
            open class Foo {
                @NonRestartableComposable @Composable fun foo(x: Int = 0) {}
            }
            class Bar: Foo() {
                @NonRestartableComposable @Composable fun Example() {
                    foo()
                }
            }
        """,
        """
            @StabilityInferred(parameters = 0)
            open class Foo {
              @NonRestartableComposable
              @Composable
              fun foo(x: Int, %composer: Composer?, %changed: Int, %default: Int) {
                %composer.startReplaceableGroup(<>)
                sourceInformation(%composer, "C(foo):Test.kt")
                if (%default and 0b0001 !== 0) {
                  x = 0
                }
                %composer.endReplaceableGroup()
              }
              static val %stable: Int = 0
            }
            @StabilityInferred(parameters = 0)
            class Bar : Foo {
              @NonRestartableComposable
              @Composable
              fun Example(%composer: Composer?, %changed: Int) {
                %composer.startReplaceableGroup(<>)
                sourceInformation(%composer, "C(Example)<foo()>:Test.kt")
                foo(0, %composer, 0b01110000 and %changed shl 0b0011, 0b0001)
                %composer.endReplaceableGroup()
              }
              static val %stable: Int = 0
            }
        """
    )

    @Test
    fun testDefaultArgsOnInvoke() = defaultParams(
        """
            object HasDefault {
                @Composable
                operator fun invoke(text: String = "SomeText"){
                    println(text)
                }
            }

            object NoDefault {
                @Composable
                operator fun invoke(text: String){
                    println(text)
                }
            }

            object MultipleDefault {
                @Composable
                operator fun invoke(text: String = "SomeText", value: Int = 5){
                    println(text)
                    println(value)
                }
            }
        """,
        """
            @NonRestartableComposable
            @Composable
            fun Bar() {
                HasDefault()
                NoDefault("Some Text")
                MultipleDefault()
            }
        """,
        """
            @NonRestartableComposable
            @Composable
            fun Bar(%composer: Composer?, %changed: Int) {
              %composer.startReplaceableGroup(<>)
              sourceInformation(%composer, "C(Bar)<HasDef...>,<NoDefa...>,<Multip...>:Test.kt")
              HasDefault(null, %composer, 0b00110000, 0b0001)
              NoDefault("Some Text", %composer, 0b00110110)
              MultipleDefault(null, 0, %composer, 0b000110000000, 0b0011)
              %composer.endReplaceableGroup()
            }

        """
        )
}
