FILE /dataClasses.kt
  CLASS CLASS Test1
    FUN public constructor Test1(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String, /*2*/ z: kotlin.Any)
      BLOCK_BODY
        SET_BACKING_FIELD x type=kotlin.Unit operator=null
          GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
        SET_BACKING_FIELD y type=kotlin.Unit operator=null
          GET_VAR y type=kotlin.String operator=INITIALIZE_PROPERTY_FROM_PARAMETER
        SET_BACKING_FIELD z type=kotlin.Unit operator=null
          GET_VAR z type=kotlin.Any operator=INITIALIZE_PROPERTY_FROM_PARAMETER
    PROPERTY public final val x: kotlin.Int
      EXPRESSION_BODY
        GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
    PROPERTY public final val y: kotlin.String
      EXPRESSION_BODY
        GET_VAR y type=kotlin.String operator=INITIALIZE_PROPERTY_FROM_PARAMETER
    PROPERTY public final val z: kotlin.Any
      EXPRESSION_BODY
        GET_VAR z type=kotlin.Any operator=INITIALIZE_PROPERTY_FROM_PARAMETER
    FUN public final operator /*synthesized*/ fun component1(): kotlin.Int
      BLOCK_BODY
        RETURN type=kotlin.Nothing from=component1
          CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
            $this: THIS public final data class Test1 type=Test1
    FUN public final operator /*synthesized*/ fun component2(): kotlin.String
      BLOCK_BODY
        RETURN type=kotlin.Nothing from=component2
          CALL .<get-y> type=kotlin.String operator=GET_PROPERTY
            $this: THIS public final data class Test1 type=Test1
    FUN public final operator /*synthesized*/ fun component3(): kotlin.Any
      BLOCK_BODY
        RETURN type=kotlin.Nothing from=component3
          CALL .<get-z> type=kotlin.Any operator=GET_PROPERTY
            $this: THIS public final data class Test1 type=Test1
    FUN public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String = ..., /*2*/ z: kotlin.Any = ...): Test1
      BLOCK_BODY
        RETURN type=kotlin.Nothing from=copy
          CALL .<init> type=Test1 operator=null
            x: GET_VAR x type=kotlin.Int operator=null
            y: GET_VAR y type=kotlin.String operator=null
            z: GET_VAR z type=kotlin.Any operator=null
    FUN public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
      BLOCK_BODY
        RETURN type=kotlin.Nothing from=toString
          STRING_CONCATENATION type=kotlin.String
            CONST String type=kotlin.String value='Test1('
            CONST String type=kotlin.String value='x='
            CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
              $this: THIS public final data class Test1 type=Test1
            CONST String type=kotlin.String value=', '
            CONST String type=kotlin.String value='y='
            CALL .<get-y> type=kotlin.String operator=GET_PROPERTY
              $this: THIS public final data class Test1 type=Test1
            CONST String type=kotlin.String value=', '
            CONST String type=kotlin.String value='z='
            CALL .<get-z> type=kotlin.Any operator=GET_PROPERTY
              $this: THIS public final data class Test1 type=Test1
            CONST String type=kotlin.String value=')'
    FUN public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
      BLOCK_BODY
        VAR val tmp0_result: kotlin.Int
          CONST Int type=kotlin.Int value='0'
        SET_VAR tmp0_result type=kotlin.Unit operator=EQ
          CALL .hashCode type=kotlin.Int operator=null
            $this: CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
              $this: THIS public final data class Test1 type=Test1
        SET_VAR tmp0_result type=kotlin.Unit operator=EQ
          CALL .plus type=kotlin.Int operator=null
            $this: CALL .times type=kotlin.Int operator=null
              $this: GET_VAR tmp0_result type=kotlin.Int operator=null
              other: CONST Int type=kotlin.Int value='31'
            other: CALL .hashCode type=kotlin.Int operator=null
              $this: CALL .<get-y> type=kotlin.String operator=GET_PROPERTY
                $this: THIS public final data class Test1 type=Test1
        SET_VAR tmp0_result type=kotlin.Unit operator=EQ
          CALL .plus type=kotlin.Int operator=null
            $this: CALL .times type=kotlin.Int operator=null
              $this: GET_VAR tmp0_result type=kotlin.Int operator=null
              other: CONST Int type=kotlin.Int value='31'
            other: CALL .hashCode type=kotlin.Int operator=null
              $this: CALL .<get-z> type=kotlin.Any operator=GET_PROPERTY
                $this: THIS public final data class Test1 type=Test1
        RETURN type=kotlin.Nothing from=hashCode
          GET_VAR tmp0_result type=kotlin.Int operator=null
    FUN public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
      BLOCK_BODY
        WHEN type=kotlin.Unit operator=null
          if: CALL .EQEQEQ type=kotlin.Boolean operator=EQEQEQ
            arg0: THIS public final data class Test1 type=Test1
            arg1: GET_VAR other type=kotlin.Any? operator=null
          then: RETURN type=kotlin.Nothing from=equals
            CONST Boolean type=kotlin.Boolean value='true'
        WHEN type=kotlin.Unit operator=null
          if: TYPE_OP operator=NOT_INSTANCEOF typeOperand=Test1
            GET_VAR other type=kotlin.Any? operator=null
          then: RETURN type=kotlin.Nothing from=equals
            CONST Boolean type=kotlin.Boolean value='false'
        VAR val tmp0_other_with_cast: Test1
          TYPE_OP operator=CAST typeOperand=Test1
            GET_VAR other type=kotlin.Any? operator=null
        WHEN type=kotlin.Unit operator=null
          if: CALL .NOT type=kotlin.Boolean operator=EXCLEQ
            arg0: CALL .EQEQ type=kotlin.Boolean operator=EXCLEQ
              arg0: CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
                $this: THIS public final data class Test1 type=Test1
              arg1: CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
                $this: GET_VAR tmp0_other_with_cast type=Test1 operator=null
          then: RETURN type=kotlin.Nothing from=equals
            CONST Boolean type=kotlin.Boolean value='false'
        WHEN type=kotlin.Unit operator=null
          if: CALL .NOT type=kotlin.Boolean operator=EXCLEQ
            arg0: CALL .EQEQ type=kotlin.Boolean operator=EXCLEQ
              arg0: CALL .<get-y> type=kotlin.String operator=GET_PROPERTY
                $this: THIS public final data class Test1 type=Test1
              arg1: CALL .<get-y> type=kotlin.String operator=GET_PROPERTY
                $this: GET_VAR tmp0_other_with_cast type=Test1 operator=null
          then: RETURN type=kotlin.Nothing from=equals
            CONST Boolean type=kotlin.Boolean value='false'
        WHEN type=kotlin.Unit operator=null
          if: CALL .NOT type=kotlin.Boolean operator=EXCLEQ
            arg0: CALL .EQEQ type=kotlin.Boolean operator=EXCLEQ
              arg0: CALL .<get-z> type=kotlin.Any operator=GET_PROPERTY
                $this: THIS public final data class Test1 type=Test1
              arg1: CALL .<get-z> type=kotlin.Any operator=GET_PROPERTY
                $this: GET_VAR tmp0_other_with_cast type=Test1 operator=null
          then: RETURN type=kotlin.Nothing from=equals
            CONST Boolean type=kotlin.Boolean value='false'
        RETURN type=kotlin.Nothing from=equals
          CONST Boolean type=kotlin.Boolean value='true'
