anchor.diff:  
   With the existing API, this example adds two tasks (`foo` and `bar`):
   
  +====
  +[.multi-language-sample]
  +=====
  +.build.gradle
   [source, groovy]
   ----
   tasks.create("foo") {
       tasks.create("bar")
   }
   ----
  +=====
  +[.multi-language-sample]
  +=====
  +.build.gradle.kts
  +[source,kotlin]
  +----
  +tasks.create("foo") {
  +    tasks.create("bar")
  +}
  +----
  +=====
  +====
   
   When converting this to use the new API, something surprising happens: `bar` doesn't exist.  The new API only executes configuration actions when necessary,
   so the `register()` for task `bar` only executes when `foo` is configured.
   
  +====
  +[.multi-language-sample]
  +=====
  +.build.gradle
   [source, groovy]
   ----
   tasks.register("foo") {
       tasks.register("bar") // WRONG
   }
   ----
  +=====
  +[.multi-language-sample]
  +=====
  +.build.gradle.kts
  +[source,kotlin]
  +----
  +tasks.register("foo") {
  +    tasks.register("bar") // WRONG
  +}
  +----
  +=====
  +====
   
   To avoid this, Gradle now detects this and prevents modification to the underlying container (through `create()` or `register()`) when using the new API.
   
  
positive.code: 
  The new, stable behavior can be switched on by adding the following to your settings file:
  
      enableFeaturePreview('STABLE_PUBLISHING')
  
  We recommend doing a test run with a local repository to see whether all artifacts still have the expected coordinates. In most cases everything should work as before and you are done. However, your publishing block may rely on the implicit deferred configuration, particularly if it relies on values that may change during the configuration phase of the build.
  
  For example, under the new behavior, the following logic assumes that `jar.baseName` doesn't change after `artifactId` is set:
  
  [source,groovy]
  ----
  subprojects {
      publishing {
  
negative.code:     doLast { ... }
  }
  ----
  =====
  [.multi-language-sample]
  =====
  .build.gradle.kts
  [source,kotlin]
  ----
  class MyTask : DefaultTask() {
      // note: no annotation here
      val outputFile: RegularFileProperty = newOutputFile()
  }
  
  task("myOtherTask") {
      val outputFile = newOutputFile()
      doLast { ... }
  }
  ----
  =====
  ====
  
  Now you have to explicitly register `outputFile`, like this:
  
  ====
  [.multi-language-sample]
  =====
  .build.gradle
  [source, groovy]
  ----
  class MyTask extends DefaultTask {
  