exit
@Advice.AssignReturned.AsScalar
@Advice.AssignReturned.ToReturned(typing = Assigner.Typing.DYNAMIC)
No bridge call, no allocation. skipOnDefaultValue = true covers all three cases: no skip keeps the body's value; skip with a value assigns it; skip with null leaves the slot at the default, which IS null / 0 because the body did not run. The carrier is Object[] because this cast is inlined into a Minecraft class that may live on any loader, and only a JDK type resolves the same everywhere.