The idea of this was to make sure that an empty result is not cached as the result for the actually requested block, fe. a SimpleBlock. Maybe better to create a NotFoundBlockInterface and have the EmptyBlock implement it, then a case like this becomes more clear?