FILE fqName: fileName:/monoidSum.kt CLASS INTERFACE name:Monoid modality:ABSTRACT visibility:public superTypes:[.Semigroup.Monoid>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Monoid.Monoid> TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false FUN FAKE_OVERRIDE name:combine visibility:public modality:ABSTRACT <> ($this:.Semigroup.Monoid>, $receiver:T of .Monoid, other:T of .Monoid) returnType:T of .Monoid [fake_override,infix] overridden: public abstract fun combine (other: T of .Semigroup): T of .Semigroup declared in .Semigroup $this: VALUE_PARAMETER name: type:.Semigroup.Monoid> $receiver: VALUE_PARAMETER name: type:T of .Monoid VALUE_PARAMETER name:other index:0 type:T of .Monoid 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 .Semigroup $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 .Semigroup $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 .Semigroup $this: VALUE_PARAMETER name: type:kotlin.Any PROPERTY name:unit visibility:public modality:ABSTRACT [val] FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.Monoid.Monoid>) returnType:T of .Monoid correspondingProperty: PROPERTY name:unit visibility:public modality:ABSTRACT [val] $this: VALUE_PARAMETER name: type:.Monoid.Monoid> CLASS INTERFACE name:Semigroup modality:ABSTRACT visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Semigroup.Semigroup> TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false 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:combine visibility:public modality:ABSTRACT <> ($this:.Semigroup.Semigroup>, $receiver:T of .Semigroup, other:T of .Semigroup) returnType:T of .Semigroup [infix] $this: VALUE_PARAMETER name: type:.Semigroup.Semigroup> $receiver: VALUE_PARAMETER name: type:T of .Semigroup VALUE_PARAMETER name:other index:0 type:T of .Semigroup CLASS OBJECT name:IntMonoid modality:FINAL visibility:public superTypes:[.Monoid] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.IntMonoid PROPERTY name:unit visibility:public modality:OPEN [val] overridden: public abstract unit: T of .Monoid FIELD PROPERTY_BACKING_FIELD name:unit type:kotlin.Int visibility:private [final] EXPRESSION_BODY CONST Int type=kotlin.Int value=0 FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:OPEN <> ($this:.IntMonoid) returnType:kotlin.Int correspondingProperty: PROPERTY name:unit visibility:public modality:OPEN [val] overridden: public abstract fun (): T of .Monoid declared in .Monoid $this: VALUE_PARAMETER name: type:.IntMonoid BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun (): kotlin.Int declared in .IntMonoid' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:unit type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null receiver: GET_VAR ': .IntMonoid declared in .IntMonoid.' type=.IntMonoid origin=null CONSTRUCTOR visibility:private <> () returnType:.IntMonoid [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:IntMonoid modality:FINAL visibility:public superTypes:[.Monoid]' 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 .Monoid $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 .Monoid $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 .Monoid $this: VALUE_PARAMETER name: type:kotlin.Any FUN name:combine visibility:public modality:OPEN <> ($this:.IntMonoid, $receiver:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int [infix] overridden: public abstract fun combine (other: T of .Monoid): T of .Monoid declared in .Monoid $this: VALUE_PARAMETER name: type:.IntMonoid $receiver: VALUE_PARAMETER name: type:kotlin.Int VALUE_PARAMETER name:other index:0 type:kotlin.Int BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun combine (other: kotlin.Int): kotlin.Int declared in .IntMonoid' CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PLUS $this: GET_VAR ': kotlin.Int declared in .IntMonoid.combine' type=kotlin.Int origin=null other: GET_VAR 'other: kotlin.Int declared in .IntMonoid.combine' type=kotlin.Int origin=null CLASS OBJECT name:StringMonoid modality:FINAL visibility:public superTypes:[.Monoid] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.StringMonoid PROPERTY name:unit visibility:public modality:OPEN [val] overridden: public abstract unit: T of .Monoid FIELD PROPERTY_BACKING_FIELD name:unit type:kotlin.String visibility:private [final] EXPRESSION_BODY CONST String type=kotlin.String value="" FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:OPEN <> ($this:.StringMonoid) returnType:kotlin.String correspondingProperty: PROPERTY name:unit visibility:public modality:OPEN [val] overridden: public abstract fun (): T of .Monoid declared in .Monoid $this: VALUE_PARAMETER name: type:.StringMonoid BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun (): kotlin.String declared in .StringMonoid' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:unit type:kotlin.String visibility:private [final]' type=kotlin.String origin=null receiver: GET_VAR ': .StringMonoid declared in .StringMonoid.' type=.StringMonoid origin=null CONSTRUCTOR visibility:private <> () returnType:.StringMonoid [primary] BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:StringMonoid modality:FINAL visibility:public superTypes:[.Monoid]' 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 .Monoid $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 .Monoid $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 .Monoid $this: VALUE_PARAMETER name: type:kotlin.Any FUN name:combine visibility:public modality:OPEN <> ($this:.StringMonoid, $receiver:kotlin.String, other:kotlin.String) returnType:kotlin.String [infix] overridden: public abstract fun combine (other: T of .Monoid): T of .Monoid declared in .Monoid $this: VALUE_PARAMETER name: type:.StringMonoid $receiver: VALUE_PARAMETER name: type:kotlin.String VALUE_PARAMETER name:other index:0 type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun combine (other: kotlin.String): kotlin.String declared in .StringMonoid' CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS $this: GET_VAR ': kotlin.String declared in .StringMonoid.combine' type=kotlin.String origin=null other: GET_VAR 'other: kotlin.String declared in .StringMonoid.combine' type=kotlin.String origin=null FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String BLOCK_BODY TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit CALL 'public final fun with (receiver: T of kotlin.with, block: @[ExtensionFunctionType] kotlin.Function1): R of kotlin.with declared in kotlin' type=kotlin.Int origin=null : .IntMonoid : kotlin.Int receiver: GET_OBJECT 'CLASS OBJECT name:IntMonoid modality:FINAL visibility:public superTypes:[.Monoid]' type=.IntMonoid block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<.IntMonoid, kotlin.Int> origin=LAMBDA FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:.IntMonoid) returnType:kotlin.Int $receiver: VALUE_PARAMETER name:$this$with type:.IntMonoid BLOCK_BODY RETURN type=kotlin.Nothing from='local final fun (): kotlin.Int declared in .box' CALL 'public final fun sum ($context_receiver_0: .Monoid.sum>): T of .sum declared in ' type=kotlin.Int origin=null : kotlin.Int $receiver: CALL 'public final fun listOf (vararg elements: T of kotlin.collections.listOf): kotlin.collections.List declared in kotlin.collections' type=kotlin.collections.List origin=null : kotlin.Int elements: VARARG type=kotlin.Array varargElementType=kotlin.Int CONST Int type=kotlin.Int value=1 CONST Int type=kotlin.Int value=2 CONST Int type=kotlin.Int value=3 $context_receiver_0: GET_VAR '$this$with: .IntMonoid declared in .box.' type=.IntMonoid origin=null RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' CALL 'public final fun with (receiver: T of kotlin.with, block: @[ExtensionFunctionType] kotlin.Function1): R of kotlin.with declared in kotlin' type=kotlin.String origin=null : .StringMonoid : kotlin.String receiver: GET_OBJECT 'CLASS OBJECT name:StringMonoid modality:FINAL visibility:public superTypes:[.Monoid]' type=.StringMonoid block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<.StringMonoid, kotlin.String> origin=LAMBDA FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:.StringMonoid) returnType:kotlin.String $receiver: VALUE_PARAMETER name:$this$with type:.StringMonoid BLOCK_BODY RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box' CALL 'public final fun sum ($context_receiver_0: .Monoid.sum>): T of .sum declared in ' type=kotlin.String origin=null : kotlin.String $receiver: CALL 'public final fun listOf (vararg elements: T of kotlin.collections.listOf): kotlin.collections.List declared in kotlin.collections' type=kotlin.collections.List origin=null : kotlin.String elements: VARARG type=kotlin.Array varargElementType=kotlin.String CONST String type=kotlin.String value="O" CONST String type=kotlin.String value="K" $context_receiver_0: GET_VAR '$this$with: .StringMonoid declared in .box.' type=.StringMonoid origin=null FUN name:sum visibility:public modality:FINAL ($receiver:kotlin.collections.List.sum>, $context_receiver_0:.Monoid.sum>) returnType:T of .sum TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false contextReceiverParametersCount: 1 $receiver: VALUE_PARAMETER name: type:kotlin.collections.List.sum> VALUE_PARAMETER name:$context_receiver_0 index:0 type:.Monoid.sum> BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun sum ($context_receiver_0: .Monoid.sum>): T of .sum declared in ' CALL 'public final fun fold (initial: R of kotlin.collections.fold, operation: kotlin.Function2<@[ParameterName(name = "acc")] R of kotlin.collections.fold, T of kotlin.collections.fold, R of kotlin.collections.fold>): R of kotlin.collections.fold declared in kotlin.collections' type=T of .sum origin=null : T of .sum : T of .sum $receiver: GET_VAR ': kotlin.collections.List.sum> declared in .sum' type=kotlin.collections.List.sum> origin=null initial: CALL 'public abstract fun (): T of .Monoid declared in .Monoid' type=T of .sum origin=GET_PROPERTY $this: GET_VAR '$context_receiver_0: .Monoid.sum> declared in .sum' type=.Monoid.sum> origin=null operation: FUN_EXPR type=kotlin.Function2<@[ParameterName(name = "acc")] T of .sum, T of .sum, T of .sum> origin=LAMBDA FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (acc:T of .sum, e:T of .sum) returnType:T of .sum VALUE_PARAMETER name:acc index:0 type:T of .sum VALUE_PARAMETER name:e index:1 type:T of .sum BLOCK_BODY RETURN type=kotlin.Nothing from='local final fun (acc: T of .sum, e: T of .sum): T of .sum declared in .sum' CALL 'public abstract fun combine (other: T of .Monoid): T of .Monoid declared in .Monoid' type=T of .sum origin=null $this: GET_VAR '$context_receiver_0: .Monoid.sum> declared in .sum' type=.Monoid.sum> origin=null $receiver: GET_VAR 'acc: T of .sum declared in .sum.' type=T of .sum origin=null other: GET_VAR 'e: T of .sum declared in .sum.' type=T of .sum origin=null