FILE fqName:test fileName:/test.kt
  FUN name:eval visibility:public modality:FINAL <T> (f:kotlin.Function0<T of test.eval>) returnType:T of test.eval
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
    VALUE_PARAMETER name:f index:0 type:kotlin.Function0<T of test.eval>
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun eval <T> (f: kotlin.Function0<T of test.eval>): T of test.eval declared in test'
        CALL 'public abstract fun invoke (): R of kotlin.Function0 declared in kotlin.Function0' type=T of test.eval origin=INVOKE
          $this: GET_VAR 'f: kotlin.Function0<T of test.eval> declared in test.eval' type=kotlin.Function0<T of test.eval> origin=VARIABLE_AS_FUNCTION
  CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.A.B]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.C
    CONSTRUCTOR visibility:public <> () returnType:test.C [primary]
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.A.B'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.A.B]'
    FUN name:f visibility:public modality:FINAL <> ($this:test.C) returnType:@[FlexibleNullability] kotlin.String?
      $this: VALUE_PARAMETER name:<this> type:test.C
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun f (): @[FlexibleNullability] kotlin.String? declared in test.C'
          CALL 'public final fun eval <T> (f: kotlin.Function0<T of test.eval>): T of test.eval declared in test' type=@[FlexibleNullability] kotlin.String? origin=null
            <T>: @[FlexibleNullability] kotlin.String?
            f: FUN_EXPR type=kotlin.Function0<@[FlexibleNullability] kotlin.String?> origin=LAMBDA
              FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='local final fun <anonymous> (): @[FlexibleNullability] kotlin.String? declared in test.C.f'
                    GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:x type:@[FlexibleNullability] kotlin.String? visibility:protected/*protected and package*/' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
                      receiver: GET_VAR '<this>: test.C declared in test.C.f' type=test.C origin=null
    FUN name:g visibility:public modality:FINAL <> ($this:test.C) returnType:@[FlexibleNullability] kotlin.String?
      $this: VALUE_PARAMETER name:<this> type:test.C
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun g (): @[FlexibleNullability] kotlin.String? declared in test.C'
          CALL 'public final fun eval <T> (f: kotlin.Function0<T of test.eval>): T of test.eval declared in test' type=@[FlexibleNullability] kotlin.String? origin=null
            <T>: @[FlexibleNullability] kotlin.String?
            f: FUN_EXPR type=kotlin.Function0<@[FlexibleNullability] kotlin.String?> origin=LAMBDA
              FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='local final fun <anonymous> (): @[FlexibleNullability] kotlin.String? declared in test.C.g'
                    GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:y type:@[FlexibleNullability] kotlin.String? visibility:protected/*protected and package*/' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
                      receiver: GET_VAR '<this>: test.C declared in test.C.g' type=test.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 <root>.A.B
      $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>.A.B
      $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>.A.B
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
