import org.gradle.model.ModelMap

class Rules extends RuleSource {

  @Mutate
  void jacocoMergeTask(ModelMap<Task> tasks) {
    tasks.create('myTask', MyTaskType)
  }

  @Mutate
  void jacocoMergeReportTask(ModelMap<Task> tasks) {
    tasks.create('myAggregateTask', MyAggregateTask)
  }

  @Mutate
  void aggregateTaskDependencies(
    @Path('tasks.myAggregateTask') MyAggregateTask aggregateTask,
    ModelMap<MyTaskType> myTasks // I don't believe generics work, but ModelMap<Task> does not because cyclical dependencies
  ) {
    // Mutate the aggregateTask with all of tasks of MyTaskType
  }
}