data class Test1 {
  constructor(stringArray: Array<String>, charArray: CharArray, booleanArray: BooleanArray, byteArray: ByteArray, shortArray: ShortArray, intArray: IntArray, longArray: LongArray, floatArray: FloatArray, doubleArray: DoubleArray) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val stringArray: Array<String>
    field = stringArray
    get

  val charArray: CharArray
    field = charArray
    get

  val booleanArray: BooleanArray
    field = booleanArray
    get

  val byteArray: ByteArray
    field = byteArray
    get

  val shortArray: ShortArray
    field = shortArray
    get

  val intArray: IntArray
    field = intArray
    get

  val longArray: LongArray
    field = longArray
    get

  val floatArray: FloatArray
    field = floatArray
    get

  val doubleArray: DoubleArray
    field = doubleArray
    get

  operator fun component1(): Array<String> {
    return <this>.#stringArray
  }

  operator fun component2(): CharArray {
    return <this>.#charArray
  }

  operator fun component3(): BooleanArray {
    return <this>.#booleanArray
  }

  operator fun component4(): ByteArray {
    return <this>.#byteArray
  }

  operator fun component5(): ShortArray {
    return <this>.#shortArray
  }

  operator fun component6(): IntArray {
    return <this>.#intArray
  }

  operator fun component7(): LongArray {
    return <this>.#longArray
  }

  operator fun component8(): FloatArray {
    return <this>.#floatArray
  }

  operator fun component9(): DoubleArray {
    return <this>.#doubleArray
  }

  fun copy(stringArray: Array<String> = <this>.#stringArray, charArray: CharArray = <this>.#charArray, booleanArray: BooleanArray = <this>.#booleanArray, byteArray: ByteArray = <this>.#byteArray, shortArray: ShortArray = <this>.#shortArray, intArray: IntArray = <this>.#intArray, longArray: LongArray = <this>.#longArray, floatArray: FloatArray = <this>.#floatArray, doubleArray: DoubleArray = <this>.#doubleArray): Test1 {
    return Test1(stringArray = stringArray, charArray = charArray, booleanArray = booleanArray, byteArray = byteArray, shortArray = shortArray, intArray = intArray, longArray = longArray, floatArray = floatArray, doubleArray = doubleArray)
  }

  override fun equals(other: Any?): Boolean {
    when {
      EQEQEQ(arg0 = <this>, arg1 = other) -> return true
    }
    when {
      other !is Test1 -> return false
    }
    val tmp0_other_with_cast: Test1 = other as Test1
    when {
      EQEQ(arg0 = <this>.#stringArray, arg1 = tmp0_other_with_cast.#stringArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#charArray, arg1 = tmp0_other_with_cast.#charArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#booleanArray, arg1 = tmp0_other_with_cast.#booleanArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#byteArray, arg1 = tmp0_other_with_cast.#byteArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#shortArray, arg1 = tmp0_other_with_cast.#shortArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#intArray, arg1 = tmp0_other_with_cast.#intArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#longArray, arg1 = tmp0_other_with_cast.#longArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#floatArray, arg1 = tmp0_other_with_cast.#floatArray).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#doubleArray, arg1 = tmp0_other_with_cast.#doubleArray).not() -> return false
    }
    return true
  }

  override fun hashCode(): Int {
    var result: Int = dataClassArrayMemberHashCode(arg0 = <this>.#stringArray)
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#charArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#booleanArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#byteArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#shortArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#intArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#longArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#floatArray))
    result = result.times(other = 31).plus(other = dataClassArrayMemberHashCode(arg0 = <this>.#doubleArray))
    return result
  }

  override fun toString(): String {
    return "Test1(" + "stringArray=" + dataClassArrayMemberToString(arg0 = <this>.#stringArray) + ", " + "charArray=" + dataClassArrayMemberToString(arg0 = <this>.#charArray) + ", " + "booleanArray=" + dataClassArrayMemberToString(arg0 = <this>.#booleanArray) + ", " + "byteArray=" + dataClassArrayMemberToString(arg0 = <this>.#byteArray) + ", " + "shortArray=" + dataClassArrayMemberToString(arg0 = <this>.#shortArray) + ", " + "intArray=" + dataClassArrayMemberToString(arg0 = <this>.#intArray) + ", " + "longArray=" + dataClassArrayMemberToString(arg0 = <this>.#longArray) + ", " + "floatArray=" + dataClassArrayMemberToString(arg0 = <this>.#floatArray) + ", " + "doubleArray=" + dataClassArrayMemberToString(arg0 = <this>.#doubleArray) + ")"
  }

}

data class Test2<T : Any?> {
  constructor(genericArray: Array<T>) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val genericArray: Array<T>
    field = genericArray
    get

  operator fun component1(): Array<T> {
    return <this>.#genericArray
  }

  fun copy(genericArray: Array<T> = <this>.#genericArray): Test2<T> {
    return Test2<Any>(genericArray = genericArray)
  }

  override fun equals(other: Any?): Boolean {
    when {
      EQEQEQ(arg0 = <this>, arg1 = other) -> return true
    }
    when {
      other !is Test2<T> -> return false
    }
    val tmp0_other_with_cast: Test2<T> = other as Test2<T>
    when {
      EQEQ(arg0 = <this>.#genericArray, arg1 = tmp0_other_with_cast.#genericArray).not() -> return false
    }
    return true
  }

  override fun hashCode(): Int {
    return dataClassArrayMemberHashCode(arg0 = <this>.#genericArray)
  }

  override fun toString(): String {
    return "Test2(" + "genericArray=" + dataClassArrayMemberToString(arg0 = <this>.#genericArray) + ")"
  }

}

data class Test3 {
  constructor(anyArrayN: Array<Any>?) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val anyArrayN: Array<Any>?
    field = anyArrayN
    get

  operator fun component1(): Array<Any>? {
    return <this>.#anyArrayN
  }

  fun copy(anyArrayN: Array<Any>? = <this>.#anyArrayN): Test3 {
    return Test3(anyArrayN = anyArrayN)
  }

  override fun equals(other: Any?): Boolean {
    when {
      EQEQEQ(arg0 = <this>, arg1 = other) -> return true
    }
    when {
      other !is Test3 -> return false
    }
    val tmp0_other_with_cast: Test3 = other as Test3
    when {
      EQEQ(arg0 = <this>.#anyArrayN, arg1 = tmp0_other_with_cast.#anyArrayN).not() -> return false
    }
    return true
  }

  override fun hashCode(): Int {
    return when {
      EQEQ(arg0 = <this>.#anyArrayN, arg1 = null) -> 0
      else -> dataClassArrayMemberHashCode(arg0 = <this>.#anyArrayN)
    }
  }

  override fun toString(): String {
    return "Test3(" + "anyArrayN=" + dataClassArrayMemberToString(arg0 = <this>.#anyArrayN) + ")"
  }

}
