docs: public synchronized Snapshot get(String key) throws IOException {
  		checkNotClosed();
  		validateKey(key);
  		Entry entry = lruEntries.get(key);
  		if (entry == null) {
  			return null;
  		}
  
  		if (!entry.readable) {
  			return null;
  		}
  
  		// Open all streams eagerly to guarantee that we see a single published
  		// snapshot. If we opened streams lazily then the streams could come
  		// from different edits.
  		File[] files = new File[valueCount];
  		InputStream[] ins = new InputStream[valueCount];
  		try {
  			File file;
  			for (int i = 0; i < valueCount; i++) {
  				file = entry.getCleanFile(i);
  				files[i] = file;
  				ins[i] = new FileInputStream(file);
  			}
  		} catch (FileNotFoundException e) {
  			// A file must have been deleted manually!
  			for (int i = 0; i < valueCount; i++) {
  				if (ins[i] != null) {
  					Util.closeQuietly(ins[i]);
  				} else {
  					break;
  				}
  			}
  			return null;
  		}
  
  		redundantOpCount++;
  		journalWriter.append(READ + ' ' + key + '\n');
  		if (journalRebuildRequired()) {
  			executorService.submit(cleanupCallable);
  		}
  
  		return new Snapshot(key, entry.sequenceNumber, files, ins, entry.lengths);
  	}