// this hack is used to ensure that iterator will be resolved first @CompileTimeCalculation internal class CharProgressionIterator(first: Char, last: Char, val step: Int) : CharIterator() @CompileTimeCalculation public class CharRange(start: Char, endInclusive: Char) : CharProgression(start, endInclusive, 1), ClosedRange fun compareTo(first: Char, second: Char) = first.compareTo(second) fun plus(first: Char, second: Int) = first.plus(second) fun minus(first: Char, second: Char) = first.minus(second) fun minus(first: Char, second: Int) = first.minus(second) fun inc(first: Char) = first.inc() fun dec(first: Char) = first.dec() fun rangeTo(first: Char, second: Char) = first.rangeTo(second) fun toByte(first: Char) = first.toByte() fun toChar(first: Char) = first.toChar() fun toShort(first: Char) = first.toShort() fun toInt(first: Char) = first.toInt() fun toLong(first: Char) = first.toLong() fun toFloat(first: Char) = first.toFloat() fun toDouble(first: Char) = first.toDouble() fun toString(first: Char) = first.toString() fun hashCode(first: Char) = first.hashCode() fun equals(first: Char, second: Char) = first.equals(second) const val a1 = compareTo('a', 'b') const val a2 = plus('1', 2) const val a3 = minus('9', '1') const val a4 = minus('9', 1) const val a5 = inc('1') const val a6 = dec('1') const val a7 = rangeTo('9', '1').last const val b1 = toByte('1') const val b2 = toChar('2') const val b3 = toShort('3') const val b4 = toInt('4') const val b5 = toLong('5') const val b6 = toFloat('6') const val b7 = toDouble('7') const val c1 = toString('q') const val c2 = hashCode('q') const val c3 = equals('1', '2')