anchor.diff:  }
   ----
   
  -As you can see, you can have multiple `from()` declarations in a copy specification, each with its own configuration.
  +As you can see, you can have multiple `from()` declarations in a copy specification, each with its own configuration. See <<Using child specifications>> for more information on this feature.
   
   [[sec:unpacking_archives_example]]
   === Unpacking archives
   
  -Archives are effectively self-contained file systems, so unpacking them is a case of copying the files from that file system into a directory (or even another archive). Gradle enables this by providing some wrapper functions that make archives available as hierarchical collections of files known as file trees (TODO: link to an in-depth discussion of file trees).
  +Archives are effectively self-contained file systems, so unpacking them is a case of copying the files from that file system into a directory (or even another archive). Gradle enables this by providing some wrapper functions that make archives available as hierarchical collections of files known as <<File trees,file trees>>.
   
   The two functions of interest are api:org.gradle.api.Project#zipTree[] and api:org.gradle.api.Project#tarTree[], which produce a api:org.gradle.api.file.FileTree[] from a corresponding archive file. That file tree can then be used in a `from()` specification, like so:
   
  
positive.code: [[working_with_files]]
  == Working With Files
  
  Almost every Gradle build works with files: think source files, library dependencies, reports and so on. That's why Gradle comes with a comprehensive API that makes it simple to achieve common tasks.
  
  The API has two parts to it:
  
   * Specifying which files and directories to process
   * Specifying what to do with them
  
  We look at these parts in more detail later in the chapter, but we'll start with how you accomplish some of the most common tasks users need.
  
  === Copying a single file
  
  You copy a file by creating an instance of Gradle's builtin api:org.gradle.api.tasks.Copy[] task and configuring it with the location of the file and where you want to put it. This example mimics copying a generated report into a directory that will be packed into an archive (zip, tarball, or whatever):
  
  ----
  task copyReport(type: Copy) {
  
negative.code:     <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
  