FILE /delegatedImplementation.kt
  CLASS INTERFACE IBase
    FUN public abstract fun foo(x: kotlin.Int, s: kotlin.String): kotlin.Unit
    FUN public abstract fun bar(): kotlin.Int
    FUN public abstract fun kotlin.String.qux(): kotlin.Unit
  CLASS OBJECT BaseImpl
    CONSTRUCTOR private constructor BaseImpl()
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
        INSTANCE_INITIALIZER_CALL classDescriptor='BaseImpl'
    FUN public open override fun foo(x: kotlin.Int, s: kotlin.String): kotlin.Unit
      BLOCK_BODY
    FUN public open override fun bar(): kotlin.Int
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='bar(): Int'
          CONST Int type=kotlin.Int value='42'
    FUN public open override fun kotlin.String.qux(): kotlin.Unit
      BLOCK_BODY
  CLASS INTERFACE IOther
    PROPERTY public abstract val x: kotlin.String
      FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun <get-x>(): kotlin.String
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-x>(): String'
            GET_FIELD 'x: String' type=kotlin.String origin=null
              receiver: GET_VAR '<receiver: IOther>' type=IOther origin=null
    PROPERTY public abstract var y: kotlin.Int
      FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun <get-y>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-y>(): Int'
            GET_FIELD 'y: Int' type=kotlin.Int origin=null
              receiver: GET_VAR '<receiver: IOther>' type=IOther origin=null
      FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun <set-y>(<set-?>: kotlin.Int): kotlin.Unit
        BLOCK_BODY
          SET_FIELD 'y: Int' type=kotlin.Unit origin=null
            receiver: GET_VAR '<receiver: IOther>' type=IOther origin=null
            value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
    PROPERTY public abstract val kotlin.Byte.z1: kotlin.Int
      FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun kotlin.Byte.<get-z1>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-z1>() on Byte: Int'
            GET_FIELD 'z1: Int on Byte' type=kotlin.Int origin=null
              receiver: GET_VAR '<receiver: IOther>' type=IOther origin=null
    PROPERTY public abstract var kotlin.Byte.z2: kotlin.Int
      FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun kotlin.Byte.<get-z2>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-z2>() on Byte: Int'
            GET_FIELD 'z2: Int on Byte' type=kotlin.Int origin=null
              receiver: GET_VAR '<receiver: IOther>' type=IOther origin=null
      FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun kotlin.Byte.<set-z2>(<set-?>: kotlin.Int): kotlin.Unit
        BLOCK_BODY
          SET_FIELD 'z2: Int on Byte' type=kotlin.Unit origin=null
            receiver: GET_VAR '<receiver: IOther>' type=IOther origin=null
            value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
  FUN public fun otherImpl(x0: kotlin.String, y0: kotlin.Int): IOther
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='otherImpl(String, Int): IOther'
        BLOCK type=otherImpl.<no name provided> origin=OBJECT_LITERAL
          CLASS CLASS <no name provided>
            CONSTRUCTOR public constructor <no name provided>()
              BLOCK_BODY
                DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
                INSTANCE_INITIALIZER_CALL classDescriptor='<no name provided>'
            PROPERTY public open override val x: kotlin.String
              FIELD PROPERTY_BACKING_FIELD public open override val x: kotlin.String
                EXPRESSION_BODY
                  GET_VAR 'value-parameter x0: String' type=kotlin.String origin=null
              FUN DEFAULT_PROPERTY_ACCESSOR public open override fun <get-x>(): kotlin.String
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='<get-x>(): String'
                    GET_FIELD 'x: String' type=kotlin.String origin=null
                      receiver: GET_VAR '<receiver: <no name provided>>' type=otherImpl.<no name provided> origin=null
            PROPERTY public open override var y: kotlin.Int
              FIELD PROPERTY_BACKING_FIELD public open override var y: kotlin.Int
                EXPRESSION_BODY
                  GET_VAR 'value-parameter y0: Int' type=kotlin.Int origin=null
              FUN DEFAULT_PROPERTY_ACCESSOR public open override fun <get-y>(): kotlin.Int
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='<get-y>(): Int'
                    GET_FIELD 'y: Int' type=kotlin.Int origin=null
                      receiver: GET_VAR '<receiver: <no name provided>>' type=otherImpl.<no name provided> origin=null
              FUN DEFAULT_PROPERTY_ACCESSOR public open override fun <set-y>(<set-?>: kotlin.Int): kotlin.Unit
                BLOCK_BODY
                  SET_FIELD 'y: Int' type=kotlin.Unit origin=null
                    receiver: GET_VAR '<receiver: <no name provided>>' type=otherImpl.<no name provided> origin=null
                    value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
            PROPERTY public open override val kotlin.Byte.z1: kotlin.Int
              FUN public open override fun kotlin.Byte.<get-z1>(): kotlin.Int
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='<get-z1>() on Byte: Int'
                    CONST Int type=kotlin.Int value='1'
            PROPERTY public open override var kotlin.Byte.z2: kotlin.Int
              FUN public open override fun kotlin.Byte.<get-z2>(): kotlin.Int
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='<get-z2>() on Byte: Int'
                    CONST Int type=kotlin.Int value='2'
              FUN public open override fun kotlin.Byte.<set-z2>(value: kotlin.Int): kotlin.Unit
                BLOCK_BODY
          CALL 'constructor <no name provided>()' type=otherImpl.<no name provided> origin=OBJECT_LITERAL
  CLASS CLASS Test1
    CONSTRUCTOR public constructor Test1()
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
        INSTANCE_INITIALIZER_CALL classDescriptor='Test1'
    FIELD DELEGATE val `Test1$IBase$delegate`: BaseImpl
      EXPRESSION_BODY
        GET_OBJECT 'BaseImpl' type=BaseImpl
    FUN DELEGATED_MEMBER public open override fun bar(): kotlin.Int
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='bar(): Int'
          CALL 'bar(): Int' type=kotlin.Int origin=null
            $this: GET_VAR '`Test1$IBase$delegate`: BaseImpl' type=BaseImpl origin=null
    FUN DELEGATED_MEMBER public open override fun foo(x: kotlin.Int, s: kotlin.String): kotlin.Unit
      BLOCK_BODY
        CALL 'foo(Int, String): Unit' type=kotlin.Unit origin=null
          $this: GET_VAR '`Test1$IBase$delegate`: BaseImpl' type=BaseImpl origin=null
          x: GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=null
          s: GET_VAR 'value-parameter s: String' type=kotlin.String origin=null
    FUN DELEGATED_MEMBER public open override fun kotlin.String.qux(): kotlin.Unit
      BLOCK_BODY
        CALL 'qux() on String: Unit' type=kotlin.Unit origin=null
          $this: GET_VAR '`Test1$IBase$delegate`: BaseImpl' type=BaseImpl origin=null
          $receiver: GET_VAR '<receiver: qux() on String: Unit>' type=kotlin.String origin=null
  CLASS CLASS Test2
    CONSTRUCTOR public constructor Test2()
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
        INSTANCE_INITIALIZER_CALL classDescriptor='Test2'
    FIELD DELEGATE val `Test2$IBase$delegate`: BaseImpl
      EXPRESSION_BODY
        GET_OBJECT 'BaseImpl' type=BaseImpl
    FUN DELEGATED_MEMBER public open override fun bar(): kotlin.Int
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='bar(): Int'
          CALL 'bar(): Int' type=kotlin.Int origin=null
            $this: GET_VAR '`Test2$IBase$delegate`: BaseImpl' type=BaseImpl origin=null
    FUN DELEGATED_MEMBER public open override fun foo(x: kotlin.Int, s: kotlin.String): kotlin.Unit
      BLOCK_BODY
        CALL 'foo(Int, String): Unit' type=kotlin.Unit origin=null
          $this: GET_VAR '`Test2$IBase$delegate`: BaseImpl' type=BaseImpl origin=null
          x: GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=null
          s: GET_VAR 'value-parameter s: String' type=kotlin.String origin=null
    FUN DELEGATED_MEMBER public open override fun kotlin.String.qux(): kotlin.Unit
      BLOCK_BODY
        CALL 'qux() on String: Unit' type=kotlin.Unit origin=null
          $this: GET_VAR '`Test2$IBase$delegate`: BaseImpl' type=BaseImpl origin=null
          $receiver: GET_VAR '<receiver: qux() on String: Unit>' type=kotlin.String origin=null
    FIELD DELEGATE val `Test2$IOther$delegate`: IOther
      EXPRESSION_BODY
        CALL 'otherImpl(String, Int): IOther' type=IOther origin=null
          x0: CONST String type=kotlin.String value=''
          y0: CONST Int type=kotlin.Int value='42'
    PROPERTY DELEGATED_MEMBER public open override val kotlin.Byte.z1: kotlin.Int
      FUN DELEGATED_MEMBER public open override fun kotlin.Byte.<get-z1>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-z1>() on Byte: Int'
            CALL '<get-z1>() on Byte: Int' type=kotlin.Int origin=null
              $this: GET_VAR '`Test2$IOther$delegate`: IOther' type=IOther origin=null
              $receiver: GET_VAR '<receiver: z1: Int on Byte>' type=kotlin.Byte origin=null
    PROPERTY DELEGATED_MEMBER public open override val x: kotlin.String
      FUN DELEGATED_MEMBER public open override fun <get-x>(): kotlin.String
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-x>(): String'
            CALL '<get-x>(): String' type=kotlin.String origin=null
              $this: GET_VAR '`Test2$IOther$delegate`: IOther' type=IOther origin=null
    PROPERTY DELEGATED_MEMBER public open override var kotlin.Byte.z2: kotlin.Int
      FUN DELEGATED_MEMBER public open override fun kotlin.Byte.<get-z2>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-z2>() on Byte: Int'
            CALL '<get-z2>() on Byte: Int' type=kotlin.Int origin=null
              $this: GET_VAR '`Test2$IOther$delegate`: IOther' type=IOther origin=null
              $receiver: GET_VAR '<receiver: z2: Int on Byte>' type=kotlin.Byte origin=null
      FUN DELEGATED_MEMBER public open override fun kotlin.Byte.<set-z2>(<set-?>: kotlin.Int): kotlin.Unit
        BLOCK_BODY
          CALL '<set-z2>(Int) on Byte: Unit' type=kotlin.Unit origin=null
            $this: GET_VAR '`Test2$IOther$delegate`: IOther' type=IOther origin=null
            $receiver: GET_VAR '<receiver: z2: Int on Byte>' type=kotlin.Byte origin=null
            <set-?>: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
    PROPERTY DELEGATED_MEMBER public open override var y: kotlin.Int
      FUN DELEGATED_MEMBER public open override fun <get-y>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-y>(): Int'
            CALL '<get-y>(): Int' type=kotlin.Int origin=null
              $this: GET_VAR '`Test2$IOther$delegate`: IOther' type=IOther origin=null
      FUN DELEGATED_MEMBER public open override fun <set-y>(<set-?>: kotlin.Int): kotlin.Unit
        BLOCK_BODY
          CALL '<set-y>(Int): Unit' type=kotlin.Unit origin=null
            $this: GET_VAR '`Test2$IOther$delegate`: IOther' type=IOther origin=null
            <set-?>: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
