| BroadcastLogger: Speed up dispatch
Where possible this delegates directly to the desired method using
argument forwarding. This is well optimized in Ruby 4.0+.
In the case that we have multiple loggers and are passed a block, we
still have to do the work to make sure the block is only called at most
once (but still only if >= 1 logger yields). In this case we should
avoid allocating a Proc and put the memoization logic inside a plain
block, as well as an un necessary array from map. |