class ZippedContentCache implements ContentCache {

    @Override
    @VolumeMetered
    public InputStream get(ContentCacheKey key) {
        return ofNullable(delegate.get(key)) //
                .map(entry -> {
                    try {
                        return new GZIPInputStream(entry);
                    } catch (ZipException e) {
                        try {
                            entry.close();
                        } catch (IOException closeException) {
                            LOGGER.debug("Unable to close stream", e);
                        }
                        return delegate.get(key);
                    } catch (IOException e) {
                        throw new TDPException(CommonErrorCodes.UNEXPECTED_EXCEPTION, e);
                    }
                }) //
                .orElse(null);
    }

    public  ZippedContentCache(ContentCache delegate);

}