anchor.diff:  A task must not use any `Project` objects at execution time.
   This includes calling `Task.getProject()` while the task is running.
   
  -Some cases can be fixed in the same way as the previous requirement.
  +Most of the cases can be fixed in the same way as the previous requirement.
   
   Often, similar things are available on both `Project` and `Task`.
   For example if you need a `Logger` in your task actions you should use `Task.logger` instead of `Project.logger`.
   
   Otherwise, you can use <<custom_gradle_types#service_injection,injected services>> instead of the methods of `Project`.
   
  -// TODO - examples
  -// - with 2 problems
  -// - p1 is using `project.version`
  -// - p2 is using `project.exec {}`
  -// - in task types
  -// - in tasks declared in scripts
  -//   https://gradle.slack.com/archives/CH43P3A10/p1591477979141600
  -
  +The following table shows what APIs or injected service should be used as a replacement for each of the `Project` methods.
  +
  +// TODO fully qualified javadoc links
   [cols="a,a",options="header"]
   |===
   | Instead of:
   | Use:
   
   | `project.rootDir`
  -| A task field or script variable to capture the root directory.
  +| A task property or script variable to capture the root directory.
   
   | `project.projectDir`
   | `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].projectDirectory`
  
positive.code: | `link:{javadocPath}/org/gradle/process/ExecOperations.html[ExecOperations].javaexec {}`
  
  | `project.ant {}`
  | [.red]#✖# Unsupported
  
  | `project.createAntBuilder()`
  | [.red]#✖# Unsupported
  
  |===
  
  
negative.code: | `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].projectDirectory.file(path)` or `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].buildDirectory.file(path)`
  
  | `project.uri(path)`
  | [.red]#✖# Not supported yet
  
  | `project.relativePath(path)`
  | `ProjectLayout.projectDirectory.file(path)`
  