data class Test1 {
  constructor(x: Int, y: String, z: Any) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val x: Int
    field = x
    get

  val y: String
    field = y
    get

  val z: Any
    field = z
    get

  operator fun component1(): Int {
    return <this>.#x
  }

  operator fun component2(): String {
    return <this>.#y
  }

  operator fun component3(): Any {
    return <this>.#z
  }

  fun copy(x: Int = <this>.#x, y: String = <this>.#y, z: Any = <this>.#z): Test1 {
    return Test1(x = x, y = y, z = z)
  }

  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>.#x, arg1 = tmp0_other_with_cast.#x).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#y, arg1 = tmp0_other_with_cast.#y).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#z, arg1 = tmp0_other_with_cast.#z).not() -> return false
    }
    return true
  }

  override fun hashCode(): Int {
    var result: Int = <this>.#x.hashCode()
    result = result.times(other = 31).plus(other = <this>.#y.hashCode())
    result = result.times(other = 31).plus(other = <this>.#z.hashCode())
    return result
  }

  override fun toString(): String {
    return "Test1(" + "x=" + <this>.#x + ", " + "y=" + <this>.#y + ", " + "z=" + <this>.#z + ")"
  }

}

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

  }

  val x: Any?
    field = x
    get

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

  fun copy(x: Any? = <this>.#x): Test2 {
    return Test2(x = x)
  }

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

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

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

}

data class Test3 {
  constructor(d: Double, dn: Double?, f: Float, df: Float?) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val d: Double
    field = d
    get

  val dn: Double?
    field = dn
    get

  val f: Float
    field = f
    get

  val df: Float?
    field = df
    get

  operator fun component1(): Double {
    return <this>.#d
  }

  operator fun component2(): Double? {
    return <this>.#dn
  }

  operator fun component3(): Float {
    return <this>.#f
  }

  operator fun component4(): Float? {
    return <this>.#df
  }

  fun copy(d: Double = <this>.#d, dn: Double? = <this>.#dn, f: Float = <this>.#f, df: Float? = <this>.#df): Test3 {
    return Test3(d = d, dn = dn, f = f, df = df)
  }

  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>.#d, arg1 = tmp0_other_with_cast.#d).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#dn, arg1 = tmp0_other_with_cast.#dn).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#f, arg1 = tmp0_other_with_cast.#f).not() -> return false
    }
    when {
      EQEQ(arg0 = <this>.#df, arg1 = tmp0_other_with_cast.#df).not() -> return false
    }
    return true
  }

  override fun hashCode(): Int {
    var result: Int = <this>.#d.hashCode()
    result = result.times(other = 31).plus(other = when {
      EQEQ(arg0 = <this>.#dn, arg1 = null) -> 0
      else -> <this>.#dn.hashCode()
    })
    result = result.times(other = 31).plus(other = <this>.#f.hashCode())
    result = result.times(other = 31).plus(other = when {
      EQEQ(arg0 = <this>.#df, arg1 = null) -> 0
      else -> <this>.#df.hashCode()
    })
    return result
  }

  override fun toString(): String {
    return "Test3(" + "d=" + <this>.#d + ", " + "dn=" + <this>.#dn + ", " + "f=" + <this>.#f + ", " + "df=" + <this>.#df + ")"
  }

}
