anchor.diff:  how to migrate these usages to APIs that are supported by the configuration cache.
   
   [[undeclared_build_service_usage]]
  -==== Using a build service from a task without the corresponding `Task#usesService` declaration
  +==== Using a build service from a task without the corresponding `Task.usesService` declaration
   
   Gradle needs the information so it can properly honor the build service lifecycle and its usage constraints.
   
  
positive.code: When a task input is annotated with `@Input` and is not a type Gradle understand directly (like `String`), then Gradle uses the serialized form of the input for up-to-date checks and the build cache key.
  Historically, Gradle also loads the serialized value from the last execution and then uses `equals()` to compare it to the current value for up-to-date checks.
  Doing so is error prone, doesn't work with the build cache and has a performance impact, therefore it has been deprecated.
  Instead of using at `@Input` on a type Gradle doesn't understand directly, use `@Nested` and annotate the properties of the type accordingly.
  
  [[changes_7.1]]
  == Upgrading from 7.0 and earlier
  
negative.code: 
  You can use the latest version of Gradle to generate a `gradlew` script and use it to execute an older version of Gradle.
  
  This should be transparent for most users; however, there may be changes for Gradle builds that rely on the environment variables `JAVA_OPTS` or `GRADLE_OPTS` to pass parameters with complicated quote escaping.
  Contact us if you suspect something has broken your build and you cannot find a solution.
  
  ==== Updates to bundled Gradle dependencies
  