code: public TaskProvider<GenerateHensonNavigatorTask> createHensonNavigatorGenerationTask(
        BaseVariant variant, String hensonNavigatorPackageName, File destinationFolder) {
      TaskProvider<GenerateHensonNavigatorTask> generateHensonNavigatorTask =
          project
              .getTasks()
              .register(
                  "generate" + capitalize(variant.getName()) + "HensonNavigator",
                  GenerateHensonNavigatorTask.class,
                  (Action<GenerateHensonNavigatorTask>)
                      generateHensonNavigatorTask1 -> {
                        generateHensonNavigatorTask1.hensonNavigatorPackageName =
                            hensonNavigatorPackageName;
                        generateHensonNavigatorTask1.destinationFolder = destinationFolder;
                        generateHensonNavigatorTask1.variant = variant;
                        generateHensonNavigatorTask1.logger = logger;
                        generateHensonNavigatorTask1.project = project;
                        generateHensonNavigatorTask1.hensonNavigatorGenerator =
                            hensonNavigatorGenerator;
                      });
      return generateHensonNavigatorTask;
    }
docs: A henson navigator is a class that helps a consumer to consume the navigation api that it
  declares in its dependencies. The henson navigator will wrap the intent builders. Thus, a
  henson navigator, is driven by consumption of intent builders, whereas the henson classes are
  driven by the production of an intent builder.
  
  <p>This task is created per android variant:
  
  <ul>
  <li>we scan the variant compile configuration for navigation api dependencies
  <li>we generate a henson navigator class for this variant that wraps the intent builders
  </ul>
  
  @param variant the variant for which to create a builder.
  @param hensonNavigatorPackageName the package name in which we create the class.