# File lib/dnsruby/resource/NXT.rb, line 122
  def self.decode_rdata(message_decoder)

    start_index = message_decoder.index

    rdata_len = -> do
      rdata_length_str = message_decoder.data[start_index - 2, 2]
      rdata_length_str.unpack('n').first
    end

    next_domain_and_bitmap = -> do
      next_domain = message_decoder.get_name
      bitmap_start_index = message_decoder.index

      # If we're being called from new_from_data, the MessageDecoder
      # contains only the rdata, not the entire message, and there will
      # be no encoded length for us to read.
      called_from_new_from_data = (start_index == 0)
      bitmap_length = called_from_new_from_data \
          ? message_decoder.data.size \
          : rdata_len.() - (bitmap_start_index - start_index)

      bitmap = message_decoder.get_bytes(bitmap_length)
      bitmap = BitMapping.reverse_binary_string_bits(bitmap)
      [next_domain, bitmap]
    end

    next_domain, type_bitmap = next_domain_and_bitmap.()
    types = TypeBitmap.from_binary_string(type_bitmap).to_type_array
    new(next_domain: next_domain, types: types)
  end