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?>> {
      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>()
            }

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

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

          }

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

      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()
            }

          }

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

      constructor() /* primary */ {
        super/*Any*/()
        /* <init>() */

      }

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

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

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

    }

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

class CR<R : Any?> : IR<R> {
  val r: R
    field = r
    get

  constructor(r: R) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

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

}

class P<P1 : Any?, P2 : Any?> {
  val p1: P1
    field = p1
    get

  val p2: P2
    field = p2
    get

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

  }

}

class Value<T : Any?, IT : IR<T>> {
  var value1: T
    field = value1
    get
    set

  val value2: IT
    field = value2
    get

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

  }

}

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

}

