anchor.diff:  .build.gradle.kts
   [source,kotlin]
   ----
  +// Define new extra properties
  +val myNewProperty by extra("initial value")
  +val myOtherNewProperty by extra { "lazy initial value" }
  +
  +// Reference existing extra properties
   val myProperty: String by extra
   val myNullableProperty: String? by extra
  -val myNewProperty by extra("initial value")
  -val myOtherNewProperty by extra { "lazy initial value" }
  -----
  -
  -It works the exact same way in settings or init scripts.
  +----
  +
  +Let's say the snippet above is from your root project build script, in order to reference the `myNewProperty` from a sub project you'd do:
  +
  +.my-sub-project/build.gradle.kts
  +[source,kotlin]
  +----
  +val myNewProperty: String by rootProject.extra
  +----
  +
  +It works the same way in settings or init scripts.
   
   All `ExtensionAware` types can host extra properties, `Task` is a common example:
   
  
positive.code: 
  === Extra properties
  
  // TODO demonstrate how to cross project borders
  
  Extra properties are documented in the <<writing_build_scripts#sec:extra_properties, Writing Build Scripts>> chapter.
  
  On every `ExtensionAware` type they can be used via the `extra` property as a Kotlin delegated property, see the sample below.
  
negative.code: ----
  tasks {
      test {
          // Define new extra properties
          val myNewTaskProperty by extra("initial value")
          val myOtherNewTaskProperty by extra { "lazy initial value" }
  
          // Reference existing extra properties
          val myTaskProperty: String by extra
          val myNullableTaskProperty: String? by extra
      }
  }
  ----
  