### Question:
ZipUtils { public static Map<String, ArrayByteSource> unzipInMemory(BeanByteSource source) { ImmutableMap.Builder<String, ArrayByteSource> builder = ImmutableMap.builder(); unzipInMemory(source, builder::put); return builder.build(); } private  ZipUtils(); static Set<String> unzipPathNames(BeanByteSource source); static Optional<ArrayByteSource> unzipPathNameInMemory(BeanByteSource source, String relativePathName); static void unzip(BeanByteSource source, Path path); static ArrayByteSource zipInMemory(List<? extends BeanByteSource> sources); static Map<String, ArrayByteSource> unpackInMemory(BeanByteSource source); static void unpackInMemory(BeanByteSource source, BiConsumer<String, ArrayByteSource> consumer); static Map<String, ArrayByteSource> unzipInMemory(BeanByteSource source); static void unzipInMemory(BeanByteSource source, BiConsumer<String, ArrayByteSource> consumer); static BeanByteSource decryptZip(BeanByteSource source, String password);  }### Answer:
@Test public void test_unzipInMemory_zipSlip() { ArrayByteSource zipFile = load("zip-slip.zip"); assertThatExceptionOfType(UncheckedIOException.class) .isThrownBy(() -> ZipUtils.unzipInMemory( zipFile, (name, extracted) -> { if (!name.equals("good.txt")) { fail("Should not get here: " + name); } })); }