anchor.diff:  ----
   
       - **Lookup the task lazily.**
  -    Useful when the task registration isn’t colocated with it’s eager usage.
  -
  +    Useful when the task registration isn’t co-located with its eager usage.
  ++
   [source,groovy]
   ----
   tasks.register "someTask"
  
positive.code: ----
  
      - **Migrate consumer task.**
      It will only work under specific circumstance.
      If the task gets resolve later or the realization may happen in a configuration action with no ways of actually knowing where the task is created or configured
  
  [source,groovy]
  ----
  tasks.register "someTask"
  
negative.code: 
  // Some time later, the task is configured using a DSL block like
  someTask {
      // The task is resolved immediately, and this closure is executed immediately
  }
  ----
  +
  You will have to migrate the DSL task configuration to the following:
  +
  [source,groovy]
  ----
  tasks.named("someTask").configure {
      // ...
      // Beware of the pitfalls here
  }
  ----
  +
  While migrating to the lazy task configuration, you may still have eager task configuration that references a task by name using Groovy’s property to task reference syntactic sugar.
  If this lookup is done from anything other than a lazy configuration action, the lazy task reference by the name will be prematurely realized:
  +
  [source,groovy]
  ----
  tasks.register "someTask"
  
  // Sometime later, an eager task is configured like
  task aEagerTask {
      // The task is resolved immediately as it will be treated as a property of the project and will result in an eager task lookup by name
      dependsOn someTask
  }
  ----
  +
  You can solve the following in three ways:
  
    - **Use `TaskProvider` variable.**
    Useful when the task is referenced multiple time in the same build script.
  +
  [source,groovy]
  ----
  def someTask = tasks.register "someTask"
  