exit

@Advice.OnMethodExit(onThrowable = Throwable::class, suppress = Throwable::class)
@Advice.AssignReturned.AsScalar(skipOnDefaultValue = false)
@Advice.AssignReturned.ToReturned(typing = Assigner.Typing.DYNAMIC)
open fun exit(slot: Int, key: String, @Advice.Origin sig: MethodType, @Advice.This(optional = true) self: Any, @Advice.AllArguments args: Array<Any>, @Advice.Return(typing = Assigner.Typing.DYNAMIC) returned: Any, @Advice.Thrown thrown: Throwable): Any

The inlined @OnMethodExit body: hand the exit to fireModify and let the post-processor assign whatever comes back.

Return

the method's new return value; returned itself means "unchanged"