FILE fqName:<root> fileName:/noSyntheticTypeParameterLeftAfterPCLA.kt
  CLASS INTERFACE name:Controller modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Controller<F of <root>.Controller>
    TYPE_PARAMETER name:F 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:<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
    FUN name:yield visibility:public modality:ABSTRACT <> ($this:<root>.Controller<F of <root>.Controller>, t:F of <root>.Controller) returnType:kotlin.Unit
      $this: VALUE_PARAMETER name:<this> type:<root>.Controller<F of <root>.Controller>
      VALUE_PARAMETER name:t index:0 type:F of <root>.Controller
  CLASS INTERFACE name:Intf modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Intf
    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
    FUN name:foo visibility:public modality:ABSTRACT <> ($this:<root>.Intf) returnType:kotlin.Unit
      $this: VALUE_PARAMETER name:<this> type:<root>.Intf
  FUN name:box visibility:public modality:FINAL <> (b:kotlin.Boolean) returnType:kotlin.Unit
    VALUE_PARAMETER name:b index:0 type:kotlin.Boolean
    BLOCK_BODY
      CALL 'public final fun generate <S> (g: @[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1<<root>.Controller<S of <root>.generate>, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
        <S>: kotlin.Unit
        g: FUN_EXPR type=@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1<<root>.Controller<kotlin.Unit>, kotlin.Unit> origin=LAMBDA
          FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:<root>.Controller<kotlin.Unit>) returnType:kotlin.Unit [suspend]
            $receiver: VALUE_PARAMETER name:$this$generate type:<root>.Controller<kotlin.Unit>
            BLOCK_BODY
              CALL 'public final fun expectIntf (intf: <root>.Intf): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
                intf: BLOCK type=<root>.box.<anonymous>.<no name provided> origin=OBJECT_LITERAL
                  CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Intf]
                    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.box.<anonymous>.<no name provided>
                    CONSTRUCTOR visibility:public <> () returnType:<root>.box.<anonymous>.<no name provided> [primary]
                      BLOCK_BODY
                        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
                        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Intf]'
                    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>.Intf
                      $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>.Intf
                      $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>.Intf
                      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
                    FUN name:foo visibility:public modality:OPEN <> ($this:<root>.box.<anonymous>.<no name provided>) returnType:kotlin.Unit
                      overridden:
                        public abstract fun foo (): kotlin.Unit declared in <root>.Intf
                      $this: VALUE_PARAMETER name:<this> type:<root>.box.<anonymous>.<no name provided>
                      BLOCK_BODY
                        WHEN type=kotlin.Unit origin=IF
                          BRANCH
                            if: GET_VAR 'b: kotlin.Boolean declared in <root>.box' type=kotlin.Boolean origin=null
                            then: BLOCK type=kotlin.Unit origin=null
                              CALL 'public final fun someUnit (): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
                          BRANCH
                            if: CONST Boolean type=kotlin.Boolean value=true
                            then: BLOCK type=kotlin.Unit origin=null
                              CALL 'public abstract fun yield (t: F of <root>.Controller): kotlin.Unit declared in <root>.Controller' type=kotlin.Unit origin=null
                                $this: GET_VAR '$this$generate: <root>.Controller<kotlin.Unit> declared in <root>.box.<anonymous>' type=<root>.Controller<kotlin.Unit> origin=null
                                t: GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
                  CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.box.<anonymous>.<no name provided>' type=<root>.box.<anonymous>.<no name provided> origin=OBJECT_LITERAL
              CALL 'public final fun someUnit (): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
  FUN name:expectIntf visibility:public modality:FINAL <> (intf:<root>.Intf) returnType:kotlin.Unit
    VALUE_PARAMETER name:intf index:0 type:<root>.Intf
    BLOCK_BODY
  FUN name:generate visibility:public modality:FINAL <S> (g:@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1<<root>.Controller<S of <root>.generate>, kotlin.Unit>) returnType:kotlin.Unit
    TYPE_PARAMETER name:S index:0 variance: superTypes:[kotlin.Any?] reified:false
    VALUE_PARAMETER name:g index:0 type:@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1<<root>.Controller<S of <root>.generate>, kotlin.Unit>
    BLOCK_BODY
  FUN name:someUnit visibility:public modality:FINAL <> () returnType:kotlin.Unit
    BLOCK_BODY
