How does the `invokedynamic`/`LambdaMetafactory` strategy treat a capturing lambda differently from a non-capturing one at the bytecode level?fun adder(base: Int): (Int) -> Int = { x -> x + base } // captures base