Why would anyone use the cache implementation that doesn't support null values? I'd rather we only had one implementation exposed to the user, even if we do need to split it in two classes.