Add TaskTree definitions more directly

Instead of putting all the task configs into a List and then adding the
List, add the task configs to the nodelist directly. This eliminates a
bunch of boiler plate "collection" code.

Change-Id: I431b32dcd683dd94a6f5b730fe0c6ad90942816c
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java b/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java
index efb4a39..5f29f00 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java
@@ -163,18 +163,31 @@
     }
 
     protected void addSubDefinitions() throws OrmException {
-      addSubDefinitions(getSubDefinitions());
-      addSubDefinitions(getTasksFactoryDefinitions());
+      addSubTaskDefinitions();
+      addSubTasksFactoryDefinitions();
       addSubFileDefinitions();
       addExternalDefinitions();
     }
 
+    protected void addSubTaskDefinitions() {
+      for (String name : task.subTasks) {
+        try {
+          Task def = task.config.getTaskOptional(name);
+          if (def != null) {
+            addSubDefinition(def);
+          }
+        } catch (ConfigInvalidException e) {
+          addSubDefinition(null);
+        }
+      }
+    }
+
     protected void addSubFileDefinitions() {
       for (String file : task.subTasksFiles) {
         try {
           addSubDefinitions(getTaskDefinitions(task.config.getBranch(), file));
         } catch (ConfigInvalidException | IOException e) {
-          nodes.add(null);
+          addSubDefinition(null);
         }
       }
     }
@@ -184,32 +197,17 @@
         try {
           External ext = task.config.getExternal(external);
           if (ext == null) {
-            nodes.add(null);
+            addSubDefinition(null);
           } else {
             addSubDefinitions(getTaskDefinitions(ext));
           }
         } catch (ConfigInvalidException | IOException e) {
-          nodes.add(null);
+          addSubDefinition(null);
         }
       }
     }
 
-    protected List<Task> getSubDefinitions() {
-      List<Task> defs = new ArrayList<>();
-      for (String name : task.subTasks) {
-        try {
-          Task def = task.config.getTaskOptional(name);
-          if (def != null) {
-            defs.add(def);
-          }
-        } catch (ConfigInvalidException e) {
-          defs.add(null);
-        }
-      }
-      return defs;
-    }
-
-    protected List<Task> getTasksFactoryDefinitions() throws OrmException {
+    protected void addSubTasksFactoryDefinitions() throws OrmException {
       List<Task> taskList = new ArrayList<>();
       for (String taskFactoryName : task.subTasksFactories) {
         TasksFactory tasksFactory = task.config.getTasksFactory(taskFactoryName);
@@ -219,28 +217,27 @@
             new Properties(namesFactory, task.properties);
             switch (NamesFactoryType.getNamesFactoryType(namesFactory.type)) {
               case STATIC:
-                getStaticTypeTasksDefinitions(tasksFactory, namesFactory, taskList);
+                addStaticTypeTasksDefinitions(tasksFactory, namesFactory);
                 continue;
               case CHANGE:
-                getChangesTypeTaskDefinitions(tasksFactory, namesFactory, taskList);
+                addChangesTypeTaskDefinitions(tasksFactory, namesFactory);
                 continue;
             }
           }
         }
-        taskList.add(null);
+        addSubDefinition(null);
       }
-      return taskList;
     }
 
-    protected void getStaticTypeTasksDefinitions(
-        TasksFactory tasksFactory, NamesFactory namesFactory, List<Task> taskList) {
+    protected void addStaticTypeTasksDefinitions(
+        TasksFactory tasksFactory, NamesFactory namesFactory) {
       for (String name : namesFactory.names) {
-        taskList.add(task.config.createTask(tasksFactory, name));
+        addSubDefinition(task.config.createTask(tasksFactory, name));
       }
     }
 
-    protected void getChangesTypeTaskDefinitions(
-        TasksFactory tasksFactory, NamesFactory namesFactory, List<Task> taskList) {
+    protected void addChangesTypeTaskDefinitions(
+        TasksFactory tasksFactory, NamesFactory namesFactory) {
       try {
         if (namesFactory.changes != null) {
           List<ChangeData> changeDataList =
@@ -248,7 +245,7 @@
                   .get()
                   .query(changeQueryBuilderProvider.get().parse(namesFactory.changes)).entities();
           for (ChangeData changeData : changeDataList) {
-            taskList.add(task.config.createTask(tasksFactory, changeData.getId().toString()));
+            addSubDefinition(task.config.createTask(tasksFactory, changeData.getId().toString()));
           }
           return;
         }
@@ -256,7 +253,7 @@
         log.atSevere().withCause(e).log("ERROR: running changes query: " + namesFactory.changes);
       } catch (QueryParseException e) {
       }
-      taskList.add(null);
+      addSubDefinition(null);
     }
 
     protected List<Task> getTaskDefinitions(External external)