whole_func_string: function _normalizeSequence(sequence) {
          var i;
  
          for (i = 0; i < sequence.length; ++i) {
              sequence[i].sort(function(x, y) {
                  // modifier keys always come first, in alphabetical order
                  if (x.length > 1 && y.length === 1) {
                      return -1;
                  } else if (x.length === 1 && y.length > 1) {
                      return 1;
                  }
  
                  // character keys come next (list should contain no duplicates,
                  // so no need for equality check)
                  return x > y ? 1 : -1;
              });
  
              sequence[i] = sequence[i].join('+');
          }
      }
func_code_string: function _normalizeSequence(sequence) {
          var i;
  
          for (i = 0; i < sequence.length; ++i) {
              sequence[i].sort(function(x, y) {
                  // modifier keys always come first, in alphabetical order
                  if (x.length > 1 && y.length === 1) {
                      return -1;
                  } else if (x.length === 1 && y.length > 1) {
                      return 1;
                  }
  
                  // character keys come next (list should contain no duplicates,
                  // so no need for equality check)
                  return x > y ? 1 : -1;
              });
  
              sequence[i] = sequence[i].join('+');
          }
      }
func_documentation_string: ensures each combo in a sequence is in a predictable order and formats
  key combos to be '+'-delimited
  
  modifies the sequence in-place
  
  @param {Array} sequence
  @returns void