anchor.diff:      <test args="libs"/>
   </sample>
   ++++
  +
  +You can also perform the same function in your own tasks with the api:org.gradle.api.Project#sync(org.gradle.api.Action)[] method.
   
   [[sec:archives]]
   === Archive creation in depth
  
positive.code: 
  As with a normal copy, you can control which files are unpacked via filters and even rename files as they are unpacked.
  
  [[sec:creating_archives_example]]
  === Creating directories
  
  Many tasks need to create directories to store the files they generate, which is why Gradle automatically manages this aspect of tasks when they explicitly define file and directory outputs. You can learn about this feature in the <<sec:up_to_date_checks,incremental build>> section of the user guide. All core Gradle tasks ensure that any output directories they need are created if necessary using this mechanism.
  
negative.code: 
  You'll get the same behavior as before except with one extra level of directory in the destination, i.e. `toArchive/reports`.
  
  One thing to note is how the `include()` directive applies only to the `from()`, whereas the directive in the previous section applied to the whole task. These different levels of granularity in the copy specification allow you to easily handle most requirements that you will come across. You can learn more about this in the section on <<Using child specifications,child specifications>>.
  
  [[sec:creating_archives_example]]
  === Creating archives (zip, tar, etc.)
  
  From the perspective of Gradle, packing files into an archive is effectively a copy in which the destination is the archive file rather than a directory on the file system. This means that creating archives looks a lot like copying, with all of the same features!
  
  The simplest case involves archiving the entire contents of a directory, which this example demonstrates by creating a ZIP of the `toArchive` directory:
  
  ----
  task packageDistribution(type: Zip) {
  