FILE fqName:foo fileName:/delegationEvaluationOrder2.kt PROPERTY name:global visibility:public modality:FINAL [var] FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static] EXPRESSION_BODY CONST String type=kotlin.String value="" FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:kotlin.String correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var] BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in foo' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.String origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> (:kotlin.String) returnType:kotlin.Unit correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var] VALUE_PARAMETER name: index:0 type:kotlin.String BLOCK_BODY SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.Unit origin=null value: GET_VAR ': kotlin.String declared in foo.' type=kotlin.String origin=null CLASS CLASS name:Base2Impl modality:FINAL visibility:public superTypes:[foo.Base2] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.Base2Impl PROPERTY name:s visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final] EXPRESSION_BODY GET_VAR 's: kotlin.String declared in foo.Base2Impl.' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:foo.Base2Impl) returnType:kotlin.String correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val] $this: VALUE_PARAMETER name: type:foo.Base2Impl BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in foo.Base2Impl' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null receiver: GET_VAR ': foo.Base2Impl declared in foo.Base2Impl.' type=foo.Base2Impl origin=null CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.Base2Impl [primary] VALUE_PARAMETER name:s index:0 type:kotlin.String BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Base2Impl modality:FINAL visibility:public superTypes:[foo.Base2]' 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 declared in foo.Base2 $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 foo.Base2 $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 foo.Base2 $this: VALUE_PARAMETER name: type:kotlin.Any FUN name:bar visibility:public modality:OPEN <> ($this:foo.Base2Impl, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2 $this: VALUE_PARAMETER name: type:foo.Base2Impl VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Base2Impl' STRING_CONCATENATION type=kotlin.String CONST String type=kotlin.String value="Base2: " CALL 'public final fun (): kotlin.String declared in foo.Base2Impl' type=kotlin.String origin=GET_PROPERTY $this: GET_VAR ': foo.Base2Impl declared in foo.Base2Impl.bar' type=foo.Base2Impl origin=null CONST String type=kotlin.String value=":" GET_VAR 'x: kotlin.String declared in foo.Base2Impl.bar' type=kotlin.String origin=null CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.BaseImpl PROPERTY name:s visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final] EXPRESSION_BODY GET_VAR 's: kotlin.String declared in foo.BaseImpl.' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:foo.BaseImpl) returnType:kotlin.String correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val] $this: VALUE_PARAMETER name: type:foo.BaseImpl BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in foo.BaseImpl' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null receiver: GET_VAR ': foo.BaseImpl declared in foo.BaseImpl.' type=foo.BaseImpl origin=null CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.BaseImpl [primary] VALUE_PARAMETER name:s index:0 type:kotlin.String BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]' 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 declared in foo.Base $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 foo.Base $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 foo.Base $this: VALUE_PARAMETER name: type:kotlin.Any FUN name:foo visibility:public modality:OPEN <> ($this:foo.BaseImpl, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base $this: VALUE_PARAMETER name: type:foo.BaseImpl VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.BaseImpl' STRING_CONCATENATION type=kotlin.String CONST String type=kotlin.String value="Base: " CALL 'public final fun (): kotlin.String declared in foo.BaseImpl' type=kotlin.String origin=GET_PROPERTY $this: GET_VAR ': foo.BaseImpl declared in foo.BaseImpl.foo' type=foo.BaseImpl origin=null CONST String type=kotlin.String value=":" GET_VAR 'x: kotlin.String declared in foo.BaseImpl.foo' type=kotlin.String origin=null CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base; foo.Base2] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.Derived FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final] EXPRESSION_BODY CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final] EXPRESSION_BODY CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ CALL 'public final fun (: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ : CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ $this: CALL 'public final fun (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ other: CONST String type=kotlin.String value=":Derived" CONSTRUCTOR visibility:public <> () returnType:foo.Derived [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in foo.DerivedBase' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base; foo.Base2]' FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2 $this: VALUE_PARAMETER name: type:foo.Derived VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived' CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null receiver: GET_VAR ': foo.Derived declared in foo.Derived.bar' type=foo.Derived origin=null x: GET_VAR 'x: kotlin.String declared in foo.Derived.bar' type=kotlin.String origin=null FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base $this: VALUE_PARAMETER name: type:foo.Derived VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived' CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null receiver: GET_VAR ': foo.Derived declared in foo.Derived.foo' type=foo.Derived origin=null x: GET_VAR 'x: kotlin.String declared in foo.Derived.foo' type=kotlin.String 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 declared in foo.DerivedBase public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2 $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 foo.DerivedBase public open fun hashCode (): kotlin.Int declared in foo.Base public open fun hashCode (): kotlin.Int declared in foo.Base2 $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 foo.DerivedBase public open fun toString (): kotlin.String declared in foo.Base public open fun toString (): kotlin.String declared in foo.Base2 $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase; foo.Base2] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.Derived1 FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final] EXPRESSION_BODY CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final] EXPRESSION_BODY CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ CALL 'public final fun (: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ : CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ $this: CALL 'public final fun (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ other: CONST String type=kotlin.String value=":Derived" CONSTRUCTOR visibility:public <> () returnType:foo.Derived1 [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in foo.DerivedBase' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase; foo.Base2]' FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2 $this: VALUE_PARAMETER name: type:foo.Derived1 VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived1' CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null receiver: GET_VAR ': foo.Derived1 declared in foo.Derived1.bar' type=foo.Derived1 origin=null x: GET_VAR 'x: kotlin.String declared in foo.Derived1.bar' type=kotlin.String origin=null FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base $this: VALUE_PARAMETER name: type:foo.Derived1 VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived1' CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null receiver: GET_VAR ': foo.Derived1 declared in foo.Derived1.foo' type=foo.Derived1 origin=null x: GET_VAR 'x: kotlin.String declared in foo.Derived1.foo' type=kotlin.String 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 declared in foo.Base public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2 $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 foo.Base public open fun hashCode (): kotlin.Int declared in foo.DerivedBase public open fun hashCode (): kotlin.Int declared in foo.Base2 $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 foo.Base public open fun toString (): kotlin.String declared in foo.DerivedBase public open fun toString (): kotlin.String declared in foo.Base2 $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:Derived2 modality:FINAL visibility:public superTypes:[foo.Base; foo.Base2; foo.DerivedBase] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.Derived2 FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final] EXPRESSION_BODY CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final] EXPRESSION_BODY CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ CALL 'public final fun (: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ : CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ $this: CALL 'public final fun (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ other: CONST String type=kotlin.String value=":Derived" CONSTRUCTOR visibility:public <> () returnType:foo.Derived2 [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in foo.DerivedBase' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived2 modality:FINAL visibility:public superTypes:[foo.Base; foo.Base2; foo.DerivedBase]' FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived2, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2 $this: VALUE_PARAMETER name: type:foo.Derived2 VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived2' CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null receiver: GET_VAR ': foo.Derived2 declared in foo.Derived2.bar' type=foo.Derived2 origin=null x: GET_VAR 'x: kotlin.String declared in foo.Derived2.bar' type=kotlin.String origin=null FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived2, x:kotlin.String) returnType:kotlin.String overridden: public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base $this: VALUE_PARAMETER name: type:foo.Derived2 VALUE_PARAMETER name:x index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived2' CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null receiver: GET_VAR ': foo.Derived2 declared in foo.Derived2.foo' type=foo.Derived2 origin=null x: GET_VAR 'x: kotlin.String declared in foo.Derived2.foo' type=kotlin.String 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 declared in foo.Base public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2 public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase $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 foo.Base public open fun hashCode (): kotlin.Int declared in foo.Base2 public open fun hashCode (): kotlin.Int declared in foo.DerivedBase $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 foo.Base public open fun toString (): kotlin.String declared in foo.Base2 public open fun toString (): kotlin.String declared in foo.DerivedBase $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.DerivedBase ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ CALL 'public final fun (: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ : CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ $this: CALL 'public final fun (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ other: CONST String type=kotlin.String value=":DerivedBase" CONSTRUCTOR visibility:public <> () returnType:foo.DerivedBase [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]' 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 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 INTERFACE name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.Base 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 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 FUN name:foo visibility:public modality:ABSTRACT <> ($this:foo.Base, x:kotlin.String) returnType:kotlin.String $this: VALUE_PARAMETER name: type:foo.Base VALUE_PARAMETER name:x index:0 type:kotlin.String CLASS INTERFACE name:Base2 modality:ABSTRACT visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:foo.Base2 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 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 FUN name:bar visibility:public modality:ABSTRACT <> ($this:foo.Base2, x:kotlin.String) returnType:kotlin.String $this: VALUE_PARAMETER name: type:foo.Base2 VALUE_PARAMETER name:x index:0 type:kotlin.String FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String BLOCK_BODY VAR name:d type:foo.Derived [var] CONSTRUCTOR_CALL 'public constructor () declared in foo.Derived' type=foo.Derived origin=null VAR name:d1 type:foo.Derived1 [var] CONSTRUCTOR_CALL 'public constructor () declared in foo.Derived1' type=foo.Derived1 origin=null VAR name:d2 type:foo.Derived2 [var] CONSTRUCTOR_CALL 'public constructor () declared in foo.Derived2' type=foo.Derived2 origin=null RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in foo' CONST String type=kotlin.String value="OK" FUN name:newBase visibility:public modality:FINAL <> () returnType:foo.Base BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ CALL 'public final fun (: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ : CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ $this: CALL 'public final fun (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ other: CONST String type=kotlin.String value=":newBase" RETURN type=kotlin.Nothing from='public final fun newBase (): foo.Base declared in foo' CONSTRUCTOR_CALL 'public constructor (s: kotlin.String) declared in foo.BaseImpl' type=foo.BaseImpl origin=null s: CONST String type=kotlin.String value="test" FUN name:newBase2 visibility:public modality:FINAL <> () returnType:foo.Base2 BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ CALL 'public final fun (: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ : CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ $this: CALL 'public final fun (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ other: CONST String type=kotlin.String value=":newBase2" RETURN type=kotlin.Nothing from='public final fun newBase2 (): foo.Base2 declared in foo' CONSTRUCTOR_CALL 'public constructor (s: kotlin.String) declared in foo.Base2Impl' type=foo.Base2Impl origin=null s: CONST String type=kotlin.String value="test"