A CacheValidity object contains all information for one pipeline component
to check if it is still valid.
For example, the FileGenerator stores only the timestamp for the read
xml file in this container.
This is an
OutputStream which forwards all received bytes to another
output stream and in addition caches all bytes, thus acting like a
TeeOutputStream.
The EventRegistry is responsible for the two-way many-to-many
mapping between cache Events and
PipelineCacheKeys necessary to allow for efficient
event-based cache invalidation.
Because persistence and recovery between application shutdown and startup are
internal concerns they are not defined here even though it is expected that most
real-world implementers of this interface would require these features.