docs: function TaskCollection(arrayOfTasks = undefined)
  {
      let obj;
  
      if (!(this instanceof TaskCollection))
      {
          obj = new TaskCollection(arrayOfTasks);
  
          return obj;
      }
      this._map = new Map();
      
      if( arrayOfTasks !== undefined)
      {
          arrayOfTasks.forEach((task)=>
          {
              this._map.set(task.name(), task);
          })
      }
  
      function add (task)
      {
          this._map.set(task.name(), task);
      }
  
      this.addTask = function addTask(task)
  	{
          this._map.set(task.name(), task.clone());
          return this;
      };
  
      this.getByName = function getByName(key)
  	{
          return this._map.get(key);
      };
  
      this.getAll = function getAll()
  	{
          return this._map;
      };
  
      this.getAllNames = function getAllNames()
  	{
          return Array.from(this._map.keys());
      };
      
      this.asArray = function asArray()
      {
          return Array.from(this._map.values());
      }
      this.append = function(task)
      {
          const tc = TaskCollection([task]);
          return this.union(tc);
      }
      this.union = function concat(collection)
      {
          const ar1 = this.asArray();
          const ar2 = collection.asArray();
          const ar3 = ar1.concat(ar2);
          const obj = TaskCollection(ar3);
          return obj;
      }
      this.copy = function copy()
      {
          const newCol = TaskCollection(this.asArray());
          return newCol;
      }
  
      this.display = function display()
  	{
  		/* eslint-disable no-console */
          console.log(`TaskCollection names: ${util.inspect(this._taskNames)} length: ${this._tasks.length}`);
  
          for (let i = 0; i < this.tasks.length; i++)
  		{
              const el = this.tasks[i];
  
              console.log(`tasks[${i}]: ${util.inspect(el)}`);
              const t = this._tasksByName[el.name()];
  
              console.log(`\tTask name:${el.name()} desc:${el.description()} prereqs: ${util.inspect(el.prerequisites())}`);
              console.log(`\t     name:${t.name()} desc:${t.description()} prereqs: ${util.inspect(t.prerequisites())}`);
          }
          console.log(`TaskCollection names: ${util.inspect(this.taskNames)} length: ${this.tasks.length}`);
  		/* eslint-enable no-console */
      };
  }