docs: function copy(value, identifier) {
    var length = value.length
    var count = identifier.length
    var result = []
    var position = 0
    var index = 0
    var start
  
    while (index < length) {
      // Take next non-punctuation characters from `value`.
      start = index
  
      while (index < length && !punctuationExppresion.test(value.charAt(index))) {
        index += 1
      }
  
      result.push(value.slice(start, index))
  
      // Advance `position` to the next punctuation character.
      while (
        position < count &&
        !punctuationExppresion.test(identifier.charAt(position))
      ) {
        position += 1
      }
  
      // Take next punctuation characters from `identifier`.
      start = position
  
      while (
        position < count &&
        punctuationExppresion.test(identifier.charAt(position))
      ) {
        if (identifier.charAt(position) === ampersand) {
          position += entityPrefixLength(identifier.slice(position))
        }
  
        position += 1
      }
  
      result.push(identifier.slice(start, position))
  
      // Advance `index` to the next non-punctuation character.
      while (index < length && punctuationExppresion.test(value.charAt(index))) {
        index += 1
      }
    }
  
    return result.join('')
  }