freeAfter

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