patch leaky abstraction "unroll"