class T4(
  val c1: Boolean,
  val c2: Boolean,
  val c3: Boolean,
  val c4: String
) {
  override fun equals(o: Any?): Boolean {
    if (o !is T4) return false;
    return c1 == o.c1 &&
      c2 == o.c2 &&
      c3 == o.c3 &&
      c4 == o.c4
  }
}

fun reformat(
  str : String,
  normalizeCase : Boolean = true,
  uppercaseFirstLetter : Boolean = true,
  divideByCamelHumps : Boolean = true,
  wordSeparator : String = " "
) =
  T4(normalizeCase, uppercaseFirstLetter, divideByCamelHumps, wordSeparator)


fun box() : String {
    val expected = T4(true, true, true, " ")
    if(reformat("", true, true, true, " ") != expected) return "fail"
    if(reformat("", true, true, true) != expected) return "fail"
    if(reformat("", true, true) != expected) return "fail"
    if(reformat("", true) != expected) return "fail"
    if(reformat("") != expected) return "fail"
    return "OK"
}
