public static void unzip(Path archive, Path destination) throws IOException {
    unzip(archive, destination, false);
  }
@Test
  public void testUnzip_modificationTimePreserved() throws URISyntaxException, IOException {
    Path archive =
        Paths.get(Resources.getResource("plugins-common/test-archives/test.zip").toURI());
    Path destination = tempFolder.getRoot().toPath();

    ZipUtil.unzip(archive, destination);

    assertThat(Files.getLastModifiedTime(destination.resolve("file1.txt")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T14:53:05Z")));
    assertThat(Files.getLastModifiedTime(destination.resolve("my-zip/file2.txt")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T14:53:44Z")));
    assertThat(Files.getLastModifiedTime(destination.resolve("my-zip")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T15:15:48Z")));
    assertThat(Files.getLastModifiedTime(destination.resolve("my-zip/some")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T14:53:38Z")));
    assertThat(Files.getLastModifiedTime(destination.resolve("my-zip/some/sub")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T14:53:38Z")));
    assertThat(Files.getLastModifiedTime(destination.resolve("my-zip/some/sub/folder")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T15:16:11Z")));
    assertThat(Files.getLastModifiedTime(destination.resolve("my-zip/some/sub/folder/file3.txt")))
        .isEqualTo(FileTime.from(Instant.parse("2018-08-30T15:16:12Z")));
  }