public static void extract(Path source, Path destination) throws IOException {
    extract(source, destination, false);
  }
@Test
  public void testExtract_modificationTimePreserved() throws URISyntaxException, IOException {
    Path source = Paths.get(Resources.getResource("core/extract.tar").toURI());
    Path destination = temporaryFolder.getRoot().toPath();

    TarExtractor.extract(source, destination);

    assertThat(
            Files.getLastModifiedTime(destination.resolve("file A"))
                .toInstant()
                .truncatedTo(ChronoUnit.SECONDS))
        .isEqualTo(Instant.parse("2019-08-01T16:13:09Z"));
    assertThat(
            Files.getLastModifiedTime(destination.resolve("file B"))
                .toInstant()
                .truncatedTo(ChronoUnit.SECONDS))
        .isEqualTo(Instant.parse("2019-08-01T16:12:00Z"));
    assertThat(
            Files.getLastModifiedTime(destination.resolve("folder"))
                .toInstant()
                .truncatedTo(ChronoUnit.SECONDS))
        .isEqualTo(Instant.parse("2019-08-01T16:12:33Z"));
    assertThat(
            Files.getLastModifiedTime(destination.resolve("folder/nested folder"))
                .toInstant()
                .truncatedTo(ChronoUnit.SECONDS))
        .isEqualTo(Instant.parse("2019-08-01T16:13:30Z"));
    assertThat(
            Files.getLastModifiedTime(destination.resolve("folder/nested folder/file C"))
                .toInstant()
                .truncatedTo(ChronoUnit.SECONDS))
        .isEqualTo(Instant.parse("2019-08-01T16:12:21Z"));
  }