free After
suspend fun <T, W1 : WantsToBeFree, W2 : WantsToBeFree> freeAfter(w1: W1, w2: W2, block: suspend (W1, W2) -> T): T
suspend fun <T, W1 : WantsToBeFree, W2 : WantsToBeFree, W3 : WantsToBeFree> freeAfter(w1: W1, w2: W2, w3: W3, block: suspend (W1, W2, W3) -> T): T
suspend fun <T, W1 : WantsToBeFree, W2 : WantsToBeFree, W3 : WantsToBeFree, W4 : WantsToBeFree> freeAfter(w1: W1, w2: W2, w3: W3, w4: W4, block: suspend (W1, W2, W3, W4) -> T): T