anchor.diff:  ====
   
   [[sec:creating_property_provider]]
  -== Creating a Property or Provider
  +== Creating a Property or Provider instance
   
   Neither `Provider` nor its subtypes such as `Property` are intended to be implemented by a build script or plugin author.  Gradle provides factory methods to create instances of these types instead. See the <<#sec:lazy_configuration_reference,Quick Reference>> for all of the types and factories available. In the previous example, we have seen 2 factory methods:
   
  
positive.code: > gradle consumer
  include::{samplesPath}/providers/listProperty/listPropertyKotlin.out[]
  ----
  
  [[sec:lazy_configuration_faqs]]
  == Guidelines
  
negative.code: Gradle provides lazy properties, which delay the calculation of a property’s value until it’s actually required. These provide three main benefits to build script and plugin authors:
  
  1. Build authors can wire together Gradle models without worrying when a particular property’s value will be known. For example, you may want to set the input source files of a task based on the source directories property of an extension but the extension property value isn't known until the build script or some other plugin configures them.
  2. Build authors can wire an output property of a task into an input property of some other task and Gradle automatically determines the task dependencies based on this connection. Property instances carry information about which task, if any, produces their value. Build authors do not need to worry about keeping task dependencies in sync with configuration changes.
  3. Build authors can avoid resource intensive work during the configuration phase, which can have a large impact on build performance. For example, when a configuration value comes from parsing a file but is only used when functional tests are run, using a property instance to capture this means that the file is parsed only when the functional tests are run, but not when, for example, `clean` is run.
  
  Gradle represents lazy properties with two interfaces:
  