code: function mergedCompilerMsgLists(list1, list2) {
    var list = [];
  
    list1 = list1 || [];
    list2 = list2 || [];
  
    function lessThan(e1, e2) {
      if (e1.lineno < e2.lineno)
        return true;
      return e1.lineno === e2.lineno && e1.charno < e2.charno;
    }
  
    var i1 = 0, i2 = 0;
    while (true) {
      if (i1 >= list1.length)
        return list.concat(list2.slice(i2));
      if (i2 >= list2.length)
        return list.concat(list1.slice(i1));
      if (lessThan(list1[i1], list2[i2]))
        list.push(list1[i1++]);
      else
        list.push(list2[i2++]);
    }
  }
docs: Used to merge the warning and error lists so that everything can be printed
  in lineno and charno order. If lineno and charno match, then list2 is chosen
  first.
  @param {Array.<CompilerMsg>} list1
  @param {Array.<CompilerMsg>} list2