interface Lazy<T : Any?> {
}

fun <T : Any?> f(lazy1: Lazy<Int>, lazy2: Lazy<CharSequence>, lazyT: Lazy<T>, lazyLazyT: Lazy<Lazy<T>>) {
  with<Lazy<Int>, Unit>(receiver = lazy1, block = local fun Lazy<Int>.<anonymous>() {
    with<Lazy<CharSequence>, Unit>(receiver = lazy2, block = local fun Lazy<CharSequence>.<anonymous>() {
      test1(/* $context_receiver_0 = $this$with, $context_receiver_1 = $this$with */)
      test2<CharSequence>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
    }
)
  }
)
  with<Lazy<CharSequence>, Unit>(receiver = lazy2, block = local fun Lazy<CharSequence>.<anonymous>() {
    with<Lazy<Int>, Unit>(receiver = lazy1, block = local fun Lazy<Int>.<anonymous>() {
      test1(/* $context_receiver_0 = $this$with, $context_receiver_1 = $this$with */)
      test2<Int>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
    }
)
  }
)
  with<Lazy<T>, Unit>(receiver = lazyT, block = local fun Lazy<T>.<anonymous>() {
    with<Lazy<Int>, Unit>(receiver = lazy1, block = local fun Lazy<Int>.<anonymous>() {
      test2<Int>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
    }
)
  }
)
  with<Lazy<Lazy<T>>, Unit>(receiver = lazyLazyT, block = local fun Lazy<Lazy<T>>.<anonymous>() {
    with<Lazy<Int>, Unit>(receiver = lazy1, block = local fun Lazy<Int>.<anonymous>() {
      test2<Int>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
      test3<T>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
    }
)
  }
)
  with<Lazy<Int>, Unit>(receiver = lazy1, block = local fun Lazy<Int>.<anonymous>() {
    with<Lazy<Lazy<T>>, Unit>(receiver = lazyLazyT, block = local fun Lazy<Lazy<T>>.<anonymous>() {
      test2<Lazy<T>>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
      test3<T>(/* $context_receiver_0 = $this$with, <this> = $this$with */)
    }
)
  }
)
}

context($context_receiver_0: Lazy<Int>, $context_receiver_1: Lazy<CharSequence>)
fun test1() {
}

context($context_receiver_0: Lazy<T>)
fun <T : Any?> Lazy<Int>.test2() {
}

context($context_receiver_0: Lazy<Lazy<T>>)
fun <T : Any?> Lazy<Int>.test3() {
}

