FILE fqName: fileName:/delegatedGenericImplementation.kt CLASS INTERFACE name:IBase modality:ABSTRACT visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.IBase.IBase> TYPE_PARAMETER name:A index:0 variance: superTypes:[kotlin.Any?] FUN name:foo visibility:public modality:ABSTRACT ($this:.IBase.IBase>, a:A of .IBase, b:B of .IBase.foo) returnType:kotlin.Unit TYPE_PARAMETER name:B index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.IBase.IBase> VALUE_PARAMETER name:a index:0 type:A of .IBase VALUE_PARAMETER name:b index:1 type:B of .IBase.foo PROPERTY name:id visibility:public modality:ABSTRACT [val] FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT ($this:.IBase.IBase>, $receiver:C of .IBase.) returnType:kotlin.collections.Map.IBase, C of .IBase.>? correspondingProperty: PROPERTY name:id visibility:public modality:ABSTRACT [val] TYPE_PARAMETER name:C index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.IBase.IBase> $receiver: VALUE_PARAMETER name: type:C of .IBase. PROPERTY name:x visibility:public modality:ABSTRACT [var] FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT ($this:.IBase.IBase>, $receiver:kotlin.collections.List.IBase.>) returnType:D of .IBase.? correspondingProperty: PROPERTY name:x visibility:public modality:ABSTRACT [var] TYPE_PARAMETER name:D index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.IBase.IBase> $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.IBase.> FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT ($this:.IBase.IBase>, $receiver:kotlin.collections.List.IBase.>, :D of .IBase.?) returnType:kotlin.Unit correspondingProperty: PROPERTY name:x visibility:public modality:ABSTRACT [var] TYPE_PARAMETER name:D index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.IBase.IBase> $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.IBase.> VALUE_PARAMETER name: index:0 type:D of .IBase.? FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any VALUE_PARAMETER name:other index:0 type:kotlin.Any? FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] overridden: public open fun hashCode (): kotlin.Int declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] overridden: public open fun toString (): kotlin.String declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[.IBase.Test1>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Test1.Test1> TYPE_PARAMETER name:E index:0 variance: superTypes:[kotlin.Any?] CONSTRUCTOR visibility:public <> (i:.IBase.Test1>) returnType:.Test1.Test1> [primary] VALUE_PARAMETER name:i index:0 type:.IBase.Test1> BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[.IBase.Test1>]' FIELD DELEGATE name:$$delegate_0 type:.IBase.Test1> visibility:private [final] EXPRESSION_BODY GET_VAR 'i: .IBase.Test1> declared in .Test1.' type=.IBase.Test1> origin=null FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN ($this:.Test1.Test1>, a:E of .Test1, b:B of .Test1.foo) returnType:kotlin.Unit overridden: public abstract fun foo (a: A of .IBase, b: B of .IBase.foo): kotlin.Unit declared in .IBase TYPE_PARAMETER name:B index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test1.Test1> VALUE_PARAMETER name:a index:0 type:E of .Test1 VALUE_PARAMETER name:b index:1 type:B of .Test1.foo BLOCK_BODY CALL 'public abstract fun foo (a: A of .IBase, b: B of .IBase.foo): kotlin.Unit declared in .IBase' type=kotlin.Unit origin=null : B of .Test1.foo $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase.Test1> visibility:private [final]' type=.IBase.Test1> origin=null receiver: GET_VAR ': .Test1.Test1> declared in .Test1.foo' type=.Test1.Test1> origin=null a: GET_VAR 'a: E of .Test1 declared in .Test1.foo' type=E of .Test1 origin=null b: GET_VAR 'b: B of .Test1.foo declared in .Test1.foo' type=B of .Test1.foo origin=null PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val] FUN DELEGATED_MEMBER name: visibility:public modality:OPEN ($this:.Test1.Test1>, $receiver:C of .Test1.) returnType:kotlin.collections.Map.Test1, C of .Test1.>? correspondingProperty: PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val] overridden: public abstract fun (): kotlin.collections.Map.IBase, C of .IBase.>? declared in .IBase TYPE_PARAMETER name:C index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test1.Test1> $receiver: VALUE_PARAMETER name: type:C of .Test1. BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun (): kotlin.collections.Map.Test1, C of .Test1.>? declared in .Test1' CALL 'public abstract fun (): kotlin.collections.Map.IBase, C of .IBase.>? declared in .IBase' type=kotlin.collections.Map.Test1, C of .Test1.>? origin=null : C of .Test1. $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase.Test1> visibility:private [final]' type=.IBase.Test1> origin=null receiver: GET_VAR ': .Test1.Test1> declared in .Test1.' type=.Test1.Test1> origin=null $receiver: GET_VAR ': C of .Test1. declared in .Test1.' type=C of .Test1. origin=null PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [var] FUN DELEGATED_MEMBER name: visibility:public modality:OPEN ($this:.Test1.Test1>, $receiver:kotlin.collections.List.Test1.>) returnType:D of .Test1.? correspondingProperty: PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [var] overridden: public abstract fun (): D of .IBase.? declared in .IBase TYPE_PARAMETER name:D index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test1.Test1> $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.Test1.> BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun (): D of .Test1.? declared in .Test1' CALL 'public abstract fun (): D of .IBase.? declared in .IBase' type=D of .Test1.? origin=null : D of .Test1. $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase.Test1> visibility:private [final]' type=.IBase.Test1> origin=null receiver: GET_VAR ': .Test1.Test1> declared in .Test1.' type=.Test1.Test1> origin=null $receiver: GET_VAR ': kotlin.collections.List.Test1.> declared in .Test1.' type=kotlin.collections.List.Test1.> origin=null FUN DELEGATED_MEMBER name: visibility:public modality:OPEN ($this:.Test1.Test1>, $receiver:kotlin.collections.List.Test1.>, :D of .Test1.?) returnType:kotlin.Unit correspondingProperty: PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [var] overridden: public abstract fun (: D of .IBase.?): kotlin.Unit declared in .IBase TYPE_PARAMETER name:D index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test1.Test1> $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.Test1.> VALUE_PARAMETER name: index:0 type:D of .Test1.? BLOCK_BODY CALL 'public abstract fun (: D of .IBase.?): kotlin.Unit declared in .IBase' type=kotlin.Unit origin=null : D of .Test1. $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase.Test1> visibility:private [final]' type=.IBase.Test1> origin=null receiver: GET_VAR ': .Test1.Test1> declared in .Test1.' type=.Test1.Test1> origin=null $receiver: GET_VAR ': kotlin.collections.List.Test1.> declared in .Test1.' type=kotlin.collections.List.Test1.> origin=null : GET_VAR ': D of .Test1.? declared in .Test1.' type=D of .Test1.? origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .IBase $this: VALUE_PARAMETER name: type:kotlin.Any VALUE_PARAMETER name:other index:0 type:kotlin.Any? FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] overridden: public open fun hashCode (): kotlin.Int [fake_override] declared in .IBase $this: VALUE_PARAMETER name: type:kotlin.Any FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] overridden: public open fun toString (): kotlin.String [fake_override] declared in .IBase $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[.IBase] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Test2 CONSTRUCTOR visibility:public <> (j:.IBase) returnType:.Test2 [primary] VALUE_PARAMETER name:j index:0 type:.IBase BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[.IBase]' PROPERTY name:j visibility:public modality:FINAL [var] FIELD PROPERTY_BACKING_FIELD name:j type:.IBase visibility:private EXPRESSION_BODY GET_VAR 'j: .IBase declared in .Test2.' type=.IBase origin=INITIALIZE_PROPERTY_FROM_PARAMETER FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.Test2) returnType:.IBase correspondingProperty: PROPERTY name:j visibility:public modality:FINAL [var] $this: VALUE_PARAMETER name: type:.Test2 BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): .IBase declared in .Test2' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:.IBase visibility:private' type=.IBase origin=null receiver: GET_VAR ': .Test2 declared in .Test2.' type=.Test2 origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.Test2, :.IBase) returnType:kotlin.Unit correspondingProperty: PROPERTY name:j visibility:public modality:FINAL [var] $this: VALUE_PARAMETER name: type:.Test2 VALUE_PARAMETER name: index:0 type:.IBase BLOCK_BODY SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:.IBase visibility:private' type=kotlin.Unit origin=null receiver: GET_VAR ': .Test2 declared in .Test2.' type=.Test2 origin=null value: GET_VAR ': .IBase declared in .Test2.' type=.IBase origin=null FIELD DELEGATE name:$$delegate_0 type:.IBase visibility:private [final] EXPRESSION_BODY GET_VAR 'j: .IBase declared in .Test2.' type=.IBase origin=null FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN ($this:.Test2, a:kotlin.String, b:B of .Test2.foo) returnType:kotlin.Unit overridden: public abstract fun foo (a: A of .IBase, b: B of .IBase.foo): kotlin.Unit declared in .IBase TYPE_PARAMETER name:B index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test2 VALUE_PARAMETER name:a index:0 type:kotlin.String VALUE_PARAMETER name:b index:1 type:B of .Test2.foo BLOCK_BODY CALL 'public abstract fun foo (a: A of .IBase, b: B of .IBase.foo): kotlin.Unit declared in .IBase' type=kotlin.Unit origin=null : B of .Test2.foo $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase visibility:private [final]' type=.IBase origin=null receiver: GET_VAR ': .Test2 declared in .Test2.foo' type=.Test2 origin=null a: GET_VAR 'a: kotlin.String declared in .Test2.foo' type=kotlin.String origin=null b: GET_VAR 'b: B of .Test2.foo declared in .Test2.foo' type=B of .Test2.foo origin=null PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val] FUN DELEGATED_MEMBER name: visibility:public modality:OPEN ($this:.Test2, $receiver:C of .Test2.) returnType:kotlin.collections.Map.Test2.>? correspondingProperty: PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val] overridden: public abstract fun (): kotlin.collections.Map.IBase, C of .IBase.>? declared in .IBase TYPE_PARAMETER name:C index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test2 $receiver: VALUE_PARAMETER name: type:C of .Test2. BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun (): kotlin.collections.Map.Test2.>? declared in .Test2' CALL 'public abstract fun (): kotlin.collections.Map.IBase, C of .IBase.>? declared in .IBase' type=kotlin.collections.Map.Test2.>? origin=null : C of .Test2. $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase visibility:private [final]' type=.IBase origin=null receiver: GET_VAR ': .Test2 declared in .Test2.' type=.Test2 origin=null $receiver: GET_VAR ': C of .Test2. declared in .Test2.' type=C of .Test2. origin=null PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [var] FUN DELEGATED_MEMBER name: visibility:public modality:OPEN ($this:.Test2, $receiver:kotlin.collections.List.Test2.>) returnType:D of .Test2.? correspondingProperty: PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [var] overridden: public abstract fun (): D of .IBase.? declared in .IBase TYPE_PARAMETER name:D index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test2 $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.Test2.> BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun (): D of .Test2.? declared in .Test2' CALL 'public abstract fun (): D of .IBase.? declared in .IBase' type=D of .Test2.? origin=null : D of .Test2. $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase visibility:private [final]' type=.IBase origin=null receiver: GET_VAR ': .Test2 declared in .Test2.' type=.Test2 origin=null $receiver: GET_VAR ': kotlin.collections.List.Test2.> declared in .Test2.' type=kotlin.collections.List.Test2.> origin=null FUN DELEGATED_MEMBER name: visibility:public modality:OPEN ($this:.Test2, $receiver:kotlin.collections.List.Test2.>, :D of .Test2.?) returnType:kotlin.Unit correspondingProperty: PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [var] overridden: public abstract fun (: D of .IBase.?): kotlin.Unit declared in .IBase TYPE_PARAMETER name:D index:0 variance: superTypes:[kotlin.Any?] $this: VALUE_PARAMETER name: type:.Test2 $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.Test2.> VALUE_PARAMETER name: index:0 type:D of .Test2.? BLOCK_BODY CALL 'public abstract fun (: D of .IBase.?): kotlin.Unit declared in .IBase' type=kotlin.Unit origin=null : D of .Test2. $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.IBase visibility:private [final]' type=.IBase origin=null receiver: GET_VAR ': .Test2 declared in .Test2.' type=.Test2 origin=null $receiver: GET_VAR ': kotlin.collections.List.Test2.> declared in .Test2.' type=kotlin.collections.List.Test2.> origin=null : GET_VAR ': D of .Test2.? declared in .Test2.' type=D of .Test2.? origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .IBase $this: VALUE_PARAMETER name: type:kotlin.Any VALUE_PARAMETER name:other index:0 type:kotlin.Any? FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] overridden: public open fun hashCode (): kotlin.Int [fake_override] declared in .IBase $this: VALUE_PARAMETER name: type:kotlin.Any FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] overridden: public open fun toString (): kotlin.String [fake_override] declared in .IBase $this: VALUE_PARAMETER name: type:kotlin.Any