user
10/03/2017, 4:29 PMclass Position(val x: Int, val y: Int) {
    fun right(units: Int) = whenPositive(units) { Position(x + units, y) }
    fun left(units: Int) = whenPositive(units) { Position(x - units, y) }
    fun up(units: Int) = whenPositive(units) { Position(x, y + units) }
    fun down(units: Int) = whenPositive(units) { Position(x, y - units) }
    private inline fun whenPositive(units: Int, function: (Int) -> Position) =
            if (units < 0) throw IllegalArgumentException() else function(units)
}