class Delegate {
  constructor(value: String) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val value: String
    field = value
    get

  operator fun getValue(thisRef: Any?, property: Any?): String {
    return <this>.<get-value>()
  }

}

class DelegateProvider {
  constructor(value: String) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val value: String
    field = value
    get

  operator fun provideDelegate(thisRef: Any?, property: Any?): Delegate {
    return Delegate(value = <this>.<get-value>())
  }

}

val testTopLevel: String /* by */
  field = DelegateProvider(value = "OK").provideDelegate(thisRef = null, property = ::testTopLevel)
  get(): String {
    return #testTopLevel$delegate.getValue(thisRef = null, property = ::testTopLevel)
  }
