Module: a
FILE fqName:<root> fileName:/module_a_classWithAllPropertiesConstructor.kt
  CLASS CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.A
    CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:<root>.A [primary]
      VALUE_PARAMETER name:s index:0 type:kotlin.String
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Any]'
    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 <root>.A.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:<root>.A) returnType:kotlin.String
        correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.A
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in <root>.A'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
              receiver: GET_VAR '<this>: <root>.A declared in <root>.A.<get-s>' type=<root>.A 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 kotlin.Any
      $this: VALUE_PARAMETER name:<this> 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:<this> 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:<this> type:kotlin.Any
  CLASS CLASS name:B modality:FINAL visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.B
    CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:<root>.B [primary]
      VALUE_PARAMETER name:s index:0 type:kotlin.String
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:B modality:FINAL visibility:public superTypes:[kotlin.Any]'
    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 <root>.B.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:<root>.B) returnType:kotlin.String
        correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.B
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in <root>.B'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
              receiver: GET_VAR '<this>: <root>.B declared in <root>.B.<get-s>' type=<root>.B 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 kotlin.Any
      $this: VALUE_PARAMETER name:<this> 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:<this> 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:<this> type:kotlin.Any
  CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C
    CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:<root>.C [primary]
      VALUE_PARAMETER name:s index:0 type:kotlin.String
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]'
    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 <root>.C.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:<root>.C) returnType:kotlin.String
        correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.C
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in <root>.C'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
              receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<get-s>' type=<root>.C 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 kotlin.Any
      $this: VALUE_PARAMETER name:<this> 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:<this> 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:<this> type:kotlin.Any
  CLASS CLASS name:Base modality:OPEN visibility:public superTypes:[kotlin.Any]
    annotations:
      AllPropertiesConstructor
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Base
    CONSTRUCTOR visibility:public <> () returnType:<root>.Base [primary]
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Base modality:OPEN visibility:public superTypes:[kotlin.Any]'
    PROPERTY name:a visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:a type:<root>.A visibility:private [final]
        EXPRESSION_BODY
          CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in <root>.A' type=<root>.A origin=null
            s: CONST String type=kotlin.String value="a"
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-a> visibility:public modality:FINAL <> ($this:<root>.Base) returnType:<root>.A
        correspondingProperty: PROPERTY name:a visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.Base
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-a> (): <root>.A declared in <root>.Base'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:a type:<root>.A visibility:private [final]' type=<root>.A origin=null
              receiver: GET_VAR '<this>: <root>.Base declared in <root>.Base.<get-a>' type=<root>.Base origin=null
    PROPERTY name:b visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:b type:<root>.B visibility:private [final]
        EXPRESSION_BODY
          CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in <root>.B' type=<root>.B origin=null
            s: CONST String type=kotlin.String value="b"
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-b> visibility:public modality:FINAL <> ($this:<root>.Base) returnType:<root>.B
        correspondingProperty: PROPERTY name:b visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.Base
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-b> (): <root>.B declared in <root>.Base'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:b type:<root>.B visibility:private [final]' type=<root>.B origin=null
              receiver: GET_VAR '<this>: <root>.Base declared in <root>.Base.<get-b>' type=<root>.Base 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 kotlin.Any
      $this: VALUE_PARAMETER name:<this> 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:<this> 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:<this> type:kotlin.Any
    CONSTRUCTOR visibility:public <> (a:<root>.A, b:<root>.B) returnType:<root>.Base
      VALUE_PARAMETER name:a index:0 type:<root>.A
      VALUE_PARAMETER name:b index:1 type:<root>.B
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
Module: b
FILE fqName:<root> fileName:/Derived.kt
  CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]
    annotations:
      AllPropertiesConstructor
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Derived
    CONSTRUCTOR visibility:public <> () returnType:<root>.Derived [primary]
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.Base'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]'
    PROPERTY name:c visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:c type:<root>.C visibility:private [final]
        EXPRESSION_BODY
          CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in <root>.C' type=<root>.C origin=null
            s: CONST String type=kotlin.String value="c"
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-c> visibility:public modality:FINAL <> ($this:<root>.Derived) returnType:<root>.C
        correspondingProperty: PROPERTY name:c visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.Derived
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-c> (): <root>.C declared in <root>.Derived'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:c type:<root>.C visibility:private [final]' type=<root>.C origin=null
              receiver: GET_VAR '<this>: <root>.Derived declared in <root>.Derived.<get-c>' type=<root>.Derived origin=null
    PROPERTY FAKE_OVERRIDE name:a visibility:public modality:FINAL [fake_override,val]
      overridden:
        public final a: <root>.A
      FUN FAKE_OVERRIDE name:<get-a> visibility:public modality:FINAL <> ($this:<root>.Base) returnType:<root>.A [fake_override]
        correspondingProperty: PROPERTY FAKE_OVERRIDE name:a visibility:public modality:FINAL [fake_override,val]
        overridden:
          public final fun <get-a> (): <root>.A declared in <root>.Base
        $this: VALUE_PARAMETER name:<this> type:<root>.Base
    PROPERTY FAKE_OVERRIDE name:b visibility:public modality:FINAL [fake_override,val]
      overridden:
        public final b: <root>.B
      FUN FAKE_OVERRIDE name:<get-b> visibility:public modality:FINAL <> ($this:<root>.Base) returnType:<root>.B [fake_override]
        correspondingProperty: PROPERTY FAKE_OVERRIDE name:b visibility:public modality:FINAL [fake_override,val]
        overridden:
          public final fun <get-b> (): <root>.B declared in <root>.Base
        $this: VALUE_PARAMETER name:<this> type:<root>.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 <root>.Base
      $this: VALUE_PARAMETER name:<this> 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 <root>.Base
      $this: VALUE_PARAMETER name:<this> 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 <root>.Base
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
    CONSTRUCTOR visibility:public <> (a:<root>.A, b:<root>.B, c:<root>.C) returnType:<root>.Derived
      VALUE_PARAMETER name:a index:0 type:<root>.A
      VALUE_PARAMETER name:b index:1 type:<root>.B
      VALUE_PARAMETER name:c index:2 type:<root>.C
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> (a: <root>.A, b: <root>.B) declared in <root>.Base'
          a: GET_VAR 'a: <root>.A declared in <root>.Derived.<init>' type=<root>.A origin=null
          b: GET_VAR 'b: <root>.B declared in <root>.Derived.<init>' type=<root>.B origin=null
FILE fqName:<root> fileName:/main.kt
  FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
    BLOCK_BODY
      VAR name:constructor type:java.lang.reflect.Constructor<<root>.Derived> [val]
        CALL 'public final fun CHECK_NOT_NULL <T0> (arg0: T0 of kotlin.internal.ir.CHECK_NOT_NULL?): {T0 of kotlin.internal.ir.CHECK_NOT_NULL & Any} declared in kotlin.internal.ir' type=java.lang.reflect.Constructor<<root>.Derived> origin=EXCLEXCL
          <T0>: java.lang.reflect.Constructor<<root>.Derived>
          arg0: CALL 'public final fun <get-javaConstructor> <T> (): java.lang.reflect.Constructor<T of kotlin.reflect.jvm.<get-javaConstructor>>? declared in kotlin.reflect.jvm' type=java.lang.reflect.Constructor<<root>.Derived>? origin=GET_PROPERTY
            <T>: <root>.Derived
            $receiver: CALL 'public final fun first <T> (predicate: kotlin.Function1<T of kotlin.collections.first, kotlin.Boolean>): T of kotlin.collections.first declared in kotlin.collections' type=kotlin.reflect.KFunction<<root>.Derived> origin=null
              <T>: kotlin.reflect.KFunction<<root>.Derived>
              $receiver: CALL 'public abstract fun <get-constructors> (): kotlin.collections.Collection<kotlin.reflect.KFunction<T of kotlin.reflect.KClass>> declared in kotlin.reflect.KClass' type=kotlin.collections.Collection<kotlin.reflect.KFunction<<root>.Derived>> origin=GET_PROPERTY
                $this: CLASS_REFERENCE 'CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]' type=kotlin.reflect.KClass<<root>.Derived>
              predicate: FUN_EXPR type=kotlin.Function1<kotlin.reflect.KFunction<<root>.Derived>, kotlin.Boolean> origin=LAMBDA
                FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (it:kotlin.reflect.KFunction<<root>.Derived>) returnType:kotlin.Boolean
                  VALUE_PARAMETER name:it index:0 type:kotlin.reflect.KFunction<<root>.Derived>
                  BLOCK_BODY
                    RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: kotlin.reflect.KFunction<<root>.Derived>): kotlin.Boolean declared in <root>.box'
                      CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                        arg0: CALL 'public abstract fun <get-size> (): kotlin.Int declared in kotlin.collections.List' type=kotlin.Int origin=GET_PROPERTY
                          $this: CALL 'public final fun <get-valueParameters> (): kotlin.collections.List<kotlin.reflect.KParameter> declared in kotlin.reflect.full' type=kotlin.collections.List<kotlin.reflect.KParameter> origin=GET_PROPERTY
                            $receiver: GET_VAR 'it: kotlin.reflect.KFunction<<root>.Derived> declared in <root>.box.<anonymous>' type=kotlin.reflect.KFunction<<root>.Derived> origin=null
                        arg1: CONST Int type=kotlin.Int value=3
      VAR name:derived type:@[FlexibleNullability] <root>.Derived? [val]
        CALL 'public open fun newInstance (vararg p0: @[FlexibleNullability] kotlin.Any?): @[FlexibleNullability] T of java.lang.reflect.Constructor? declared in java.lang.reflect.Constructor' type=@[FlexibleNullability] <root>.Derived? origin=null
          $this: GET_VAR 'val constructor: java.lang.reflect.Constructor<<root>.Derived> declared in <root>.box' type=java.lang.reflect.Constructor<<root>.Derived> origin=null
          p0: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.Any?>? varargElementType=@[FlexibleNullability] kotlin.Any?
            CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in <root>.A' type=<root>.A origin=null
              s: CONST String type=kotlin.String value="a"
            CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in <root>.B' type=<root>.B origin=null
              s: CONST String type=kotlin.String value="b"
            CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in <root>.C' type=<root>.C origin=null
              s: CONST String type=kotlin.String value="c"
      RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
        WHEN type=kotlin.String origin=IF
          BRANCH
            if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
              $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
                arg0: GET_VAR 'val derived: @[FlexibleNullability] <root>.Derived? declared in <root>.box' type=@[FlexibleNullability] <root>.Derived? origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
            then: CONST String type=kotlin.String value="OK"
          BRANCH
            if: CONST Boolean type=kotlin.Boolean value=true
            then: CONST String type=kotlin.String value="Error"
