FILE fqName: fileName:/referenceToCompanionFunction.kt CLASS CLASS name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Base CONSTRUCTOR visibility:public <> () returnType:.Base [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Base modality:ABSTRACT 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 FUN name:bar visibility:public modality:ABSTRACT <> ($this:.Base) returnType:kotlin.String $this: VALUE_PARAMETER name: type:.Base FUN name:foo visibility:public modality:FINAL <> ($this:.Base) returnType:kotlin.String $this: VALUE_PARAMETER name: type:.Base BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun foo (): kotlin.String declared in .Base' CONST String type=kotlin.String value="A" CLASS CLASS name:Some modality:FINAL visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Some CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[.Base] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Some.Companion CONSTRUCTOR visibility:private <> () returnType:.Some.Companion [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in .Base' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[.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 .Base $this: VALUE_PARAMETER name: type:kotlin.Any VALUE_PARAMETER name:other index:0 type:kotlin.Any? FUN FAKE_OVERRIDE name:foo visibility:public modality:FINAL <> ($this:.Base) returnType:kotlin.String [fake_override] overridden: public final fun foo (): kotlin.String declared in .Base $this: VALUE_PARAMETER name: type:.Base 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 .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 .Base $this: VALUE_PARAMETER name: type:kotlin.Any FUN name:bar visibility:public modality:OPEN <> ($this:.Some.Companion) returnType:kotlin.String overridden: public abstract fun bar (): kotlin.String declared in .Base $this: VALUE_PARAMETER name: type:.Some.Companion BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun bar (): kotlin.String declared in .Some.Companion' CONST String type=kotlin.String value="B" CONSTRUCTOR visibility:public <> () returnType:.Some [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Some modality:FINAL 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 OBJECT name:Singleton modality:FINAL visibility:public superTypes:[.Base] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Singleton CONSTRUCTOR visibility:private <> () returnType:.Singleton [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in .Base' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Singleton modality:FINAL visibility:public superTypes:[.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 .Base $this: VALUE_PARAMETER name: type:kotlin.Any VALUE_PARAMETER name:other index:0 type:kotlin.Any? FUN FAKE_OVERRIDE name:foo visibility:public modality:FINAL <> ($this:.Base) returnType:kotlin.String [fake_override] overridden: public final fun foo (): kotlin.String declared in .Base $this: VALUE_PARAMETER name: type:.Base 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 .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 .Base $this: VALUE_PARAMETER name: type:kotlin.Any FUN name:bar visibility:public modality:OPEN <> ($this:.Singleton) returnType:kotlin.String overridden: public abstract fun bar (): kotlin.String declared in .Base $this: VALUE_PARAMETER name: type:.Singleton BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun bar (): kotlin.String declared in .Singleton' CONST String type=kotlin.String value="C" FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String BLOCK_BODY VAR name:ref1 type:kotlin.reflect.KFunction0 [val] FUNCTION_REFERENCE 'public final fun foo (): kotlin.String declared in .Some.Companion' type=kotlin.reflect.KFunction0 origin=null reflectionTarget= $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[.Base]' type=.Some.Companion VAR name:ref2 type:kotlin.reflect.KFunction0 [val] FUNCTION_REFERENCE 'public open fun bar (): kotlin.String declared in .Some.Companion' type=kotlin.reflect.KFunction0 origin=null reflectionTarget= $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[.Base]' type=.Some.Companion VAR name:ref3 type:kotlin.reflect.KFunction0 [val] FUNCTION_REFERENCE 'public final fun foo (): kotlin.String declared in .Some.Companion' type=kotlin.reflect.KFunction0 origin=null reflectionTarget= $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[.Base]' type=.Some.Companion VAR name:ref4 type:kotlin.reflect.KFunction0 [val] FUNCTION_REFERENCE 'public open fun bar (): kotlin.String declared in .Some.Companion' type=kotlin.reflect.KFunction0 origin=null reflectionTarget= $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[.Base]' type=.Some.Companion VAR name:ref5 type:kotlin.reflect.KFunction0 [val] FUNCTION_REFERENCE 'public final fun foo (): kotlin.String declared in .Singleton' type=kotlin.reflect.KFunction0 origin=null reflectionTarget= $this: GET_OBJECT 'CLASS OBJECT name:Singleton modality:FINAL visibility:public superTypes:[.Base]' type=.Singleton VAR name:ref6 type:kotlin.reflect.KFunction0 [val] FUNCTION_REFERENCE 'public open fun bar (): kotlin.String declared in .Singleton' type=kotlin.reflect.KFunction0 origin=null reflectionTarget= $this: GET_OBJECT 'CLASS OBJECT name:Singleton modality:FINAL visibility:public superTypes:[.Base]' type=.Singleton VAR name:result type:kotlin.String [val] CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS $this: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS $this: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS $this: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS $this: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS $this: CALL 'public abstract fun invoke (): R of kotlin.reflect.KFunction0 declared in kotlin.reflect.KFunction0' type=kotlin.String origin=INVOKE $this: GET_VAR 'val ref1: kotlin.reflect.KFunction0 declared in .box' type=kotlin.reflect.KFunction0 origin=VARIABLE_AS_FUNCTION other: CALL 'public abstract fun invoke (): R of kotlin.reflect.KFunction0 declared in kotlin.reflect.KFunction0' type=kotlin.String origin=INVOKE $this: GET_VAR 'val ref2: kotlin.reflect.KFunction0 declared in .box' type=kotlin.reflect.KFunction0 origin=VARIABLE_AS_FUNCTION other: CALL 'public abstract fun invoke (): R of kotlin.reflect.KFunction0 declared in kotlin.reflect.KFunction0' type=kotlin.String origin=INVOKE $this: GET_VAR 'val ref3: kotlin.reflect.KFunction0 declared in .box' type=kotlin.reflect.KFunction0 origin=VARIABLE_AS_FUNCTION other: CALL 'public abstract fun invoke (): R of kotlin.reflect.KFunction0 declared in kotlin.reflect.KFunction0' type=kotlin.String origin=INVOKE $this: GET_VAR 'val ref4: kotlin.reflect.KFunction0 declared in .box' type=kotlin.reflect.KFunction0 origin=VARIABLE_AS_FUNCTION other: CALL 'public abstract fun invoke (): R of kotlin.reflect.KFunction0 declared in kotlin.reflect.KFunction0' type=kotlin.String origin=INVOKE $this: GET_VAR 'val ref5: kotlin.reflect.KFunction0 declared in .box' type=kotlin.reflect.KFunction0 origin=VARIABLE_AS_FUNCTION other: CALL 'public abstract fun invoke (): R of kotlin.reflect.KFunction0 declared in kotlin.reflect.KFunction0' type=kotlin.String origin=INVOKE $this: GET_VAR 'val ref6: kotlin.reflect.KFunction0 declared in .box' type=kotlin.reflect.KFunction0 origin=VARIABLE_AS_FUNCTION RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' WHEN type=kotlin.String origin=IF BRANCH if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ arg0: GET_VAR 'val result: kotlin.String declared in .box' type=kotlin.String origin=null arg1: CONST String type=kotlin.String value="ABABAC" then: CONST String type=kotlin.String value="OK" BRANCH if: CONST Boolean type=kotlin.Boolean value=true then: STRING_CONCATENATION type=kotlin.String CONST String type=kotlin.String value="Fail: " GET_VAR 'val result: kotlin.String declared in .box' type=kotlin.String origin=null