# File lib/asciidoctor/helpers.rb, line 64
  def self.normalize_lines_array data
    return [] if data.empty?

    # NOTE if data encoding is UTF-*, we only need 0..1
    leading_bytes = (first_line = data[0])[0..2].bytes.to_a
    if COERCE_ENCODING
      utf8 = ::Encoding::UTF_8
      if (leading_2_bytes = leading_bytes[0..1]) == BOM_BYTES_UTF_16LE
        # Ruby messes up trailing whitespace on UTF-16LE, so take a different route
        return ((data.join.force_encoding ::Encoding::UTF_16LE)[1..-1].encode utf8).lines.map {|line| line.rstrip }
      elsif leading_2_bytes == BOM_BYTES_UTF_16BE
        data[0] = (first_line.force_encoding ::Encoding::UTF_16BE)[1..-1]
        return data.map {|line| "#{((line.force_encoding ::Encoding::UTF_16BE).encode utf8).rstrip}" }
      elsif leading_bytes[0..2] == BOM_BYTES_UTF_8
        data[0] = (first_line.force_encoding utf8)[1..-1]
      end

      data.map {|line| line.encoding == utf8 ? line.rstrip : (line.force_encoding utf8).rstrip }
    else
      # Ruby 1.8 has no built-in re-encoding, so no point in removing the UTF-16 BOMs
      if leading_bytes == BOM_BYTES_UTF_8
        data[0] = first_line[3..-1]
      end
      data.map {|line| line.rstrip }
    end
  end