Couldn't we actually make the empty signal a singleton? I don't think we should expose it as such, but I don't see any reason it couldn't. From your numbers, it sounds like it'd save a lot of allocations.