AH
было
fun foo(arg1: Foo?, arg2: Bar?): …
где arg1 и arg2 имеют какую-то связь (например только один из них может быть null)
стало
sealed FooArgs
data class Arg1NotNull(fooNotNull: Foo): FooArgs
data class Arg2NotNull(barNotNull: Bar): FooArgs
object BothAreNull: fooArgs
fun foo(fooArgs: FooArgs) =
when(fooArgs) {
is Arg1NotNull ->
is Arg2NotNull ->
is BothAreNull ->
}