title: This not referring to the original object using Kotlins class delegation
body: <p>I am confused how delegation works in Kotlin. <a href="https://en.wikipedia.org/wiki/Delegation_pattern" rel="nofollow noreferrer">Wikipedia</a> says:</p>
  
  <blockquote>
    <p>With language-level support for delegation, this is done implicitly by having self in the delegate refer to the original (sending) object, not the delegate (receiving object).</p>
  </blockquote>
  
  <p>Given the following Code:</p>
  
  <pre><code>interface BaseInterface {
      fun print()
  }
  
  open class Base() : BaseInterface {
      override fun print() { println(this) }
  }
  
  class Forwarded()  {
      private val base = Base()
  
      fun print() { base.print() }
  }
  
  class Inherited() : Base() {}
  
  class Delegated(delegate: BaseInterface) : BaseInterface by delegate
  
  fun main(args: Array&lt;String&gt;) {
      print("Forwarded: ")
      Forwarded().print();
      print("Inherited: ")
      Inherited().print();
      print("Delegated: ")
      Delegated(Base()).print();
  }
  </code></pre>
  
  <p>I get this output:</p>
  
  <pre><code>Forwarded: Base@7440e464
  Inherited: Inherited@49476842
  Delegated: Base@78308db1
  </code></pre>
  
  <p>I'd expect Delegated to return <code>Delegated</code> because self/this should refer to the original object. Do I get it wrong or is Kotlins delegation different?</p>