code: function full(source) {
          for (var i = 0, item; i < source.length; i++) {
            item = source.splice(i, 1)[0];
            seen.push(item);
  
            if (source.length === 0) permutations.push(seen.slice());
            full(source);
  
            source.splice(i, 0, item);
            seen.pop();
          }
  
          return permutations;
        }
docs: Full iterator for the permutations
  
  @param {Array} source
  @returns {Array} permutations
  @api private