class Value<T : Any?, IT : IR<T>> {
  constructor(value1: T, value2: IT) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  var value1: T
    field = value1
    get
    set

  val value2: IT
    field = value2
    get

}

interface IDelegate1<T1 : Any?, R1 : Any?> {
  abstract operator fun getValue(t: T1, p: KProperty<*>): R1

}

interface IDelegate2<T2 : Any?, R2 : Any?> {
  abstract operator fun getValue(t: T2, p: KProperty<*>): R2

}

interface IR<R : Any?> {
  abstract fun foo(): R

}

class CR<R : Any?> : IR<R> {
  constructor(r: R) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val r: R
    field = r
    get

  override fun foo(): R {
    return <this>.<get-r>()
  }

}

class P<P1 : Any?, P2 : Any?> {
  constructor(p1: P1, p2: P2) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val p1: P1
    field = p1
    get

  val p2: P2
    field = p2
    get

}

val <T : Any?> Value<T, CR<T>>.additionalText: P<T, T> /* by */
  field = { // BLOCK
    local class <no name provided> : IDelegate1<Value<Any?, CR<Any?>>, P<Any?, Any?>> {
      constructor() /* primary */ {
        super/*Any*/()
        /* <init>() */

      }

      fun <F11T : Any?> qux11(t: F11T): F11T {
        return t
      }

      fun <F12T : IR<Any?>> qux12(t: F12T): Any? {
        return t.foo() /*as Any? */
      }

      private val Value<Any?, CR<Any?>>.deepO: Any? /* by */
        field = { // BLOCK
          local class <no name provided> : IDelegate1<Value<Any?, CR<Any?>>, Any?> {
            constructor() /* primary */ {
              super/*Any*/()
              /* <init>() */

            }

            override operator fun getValue(t: Value<Any?, CR<Any?>>, p: KProperty<*>): Any? {
              return t.<get-value1>() /*as Any? */
            }

            fun <F21T : Any?> qux21(t: F21T): F21T {
              return t
            }

            fun <F22T : IR<Any?>> qux22(t: F22T): Any? {
              return t.foo() /*as Any? */
            }

          }

          <no name provided>()
        }
        private get(): Any? {
          return <this>.#deepO$delegate.getValue(t = <this>, p = <no name provided>::deepO) /*as Any? */
        }

      private val Value<Any?, CR<Any?>>.deepK: Any? /* by */
        field = { // BLOCK
          local class <no name provided> : IDelegate1<Value<Any?, CR<Any?>>, Any?> {
            constructor() /* primary */ {
              super/*Any*/()
              /* <init>() */

            }

            override operator fun getValue(t: Value<Any?, CR<Any?>>, p: KProperty<*>): Any? {
              return t.<get-value2>().foo() /*as Any? */
            }

          }

          <no name provided>()
        }
        private get(): Any? {
          return <this>.#deepK$delegate.getValue(t = <this>, p = <no name provided>::deepK) /*as Any? */
        }

      override operator fun getValue(t: Value<Any?, CR<Any?>>, p: KProperty<*>): P<Any?, Any?> {
        return P<Any?, Any?>(p1 = (<this>, t).<get-deepO>() /*as Any? */, p2 = (<this>, t).<get-deepK>() /*as Any? */)
      }

    }

    <no name provided>()
  }
  get(): P<T, T> {
    return #additionalText$delegate.getValue(t = <this>, p = ::additionalText/*<T>()*/)
  }
