// COMPILATION_ERRORS

fun naturalOrder<in T : Comparable<T>>(a : T, b : T) : Int = a.compareTo(b)

fun castingNaturalOrder(a : Object, b : Object) : Int = (a as Comparable<Object>).compareTo(b as Comparable<Object>)

enum class ComparisonResult {
  LS, EQ, GR;
}

fun <T> asMatchableComparison(cmp : Comparison<T>) : MatchableComparison<T> = {a, b ->
  val res = cmp(a, b)
  if (res == 0) return ComparisonResult.EQ
  if (res < 0) return ComparisonResult.LS
  return ComparisonResult.GR
}

