public Builder addEntryRecursive(
        Path sourceFile,
        AbsoluteUnixPath pathInContainer,
        FilePermissionsProvider filePermissionProvider)
        throws IOException {
      return addEntryRecursive(
          sourceFile, pathInContainer, filePermissionProvider, DEFAULT_MODIFICATION_TIME_PROVIDER);
    }
Adds an entry to the layer. If the source file is a directory, the directory and its contents
will be added recursively.

@param sourceFile the source file to add to the layer recursively
@param pathInContainer the path in the container file system corresponding to the {@code
    sourceFile}
@param filePermissionProvider a provider that takes a source path and destination path on the
    container and returns the file permissions that should be set for that path
@return this
@throws IOException if an exception occurred when recursively listing the directory
jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FileEntriesLayer.java