even though it applies to results of dispatch, the results could be provided as input from the outside world or other programs that cannot be assumed to be bounded unless the programmer has made sure that is the case. I do think this is rather different to the protocol caches due to type vs value, imagine a multimethod that dispatches on count, you could specialise for 0,1,2 and then leave :default to handle other cases, or a :type field whose value is selected on a HTML form, :default could be a fallback for invalid selections.