def self.next_labeled_list(reader, match, parent)
list_block = List.new(parent, :dlist)
previous_pair = nil
sibling_pattern = DefinitionListSiblingRx[match[2]]
while match || (reader.has_more_lines? && (match = sibling_pattern.match(reader.peek_line)))
term, item = next_list_item(reader, list_block, match, sibling_pattern)
if previous_pair && !previous_pair[-1]
previous_pair.pop
previous_pair[0] << term
previous_pair << item
else
list_block.items << (previous_pair = [[term], item])
end
match = nil
end
list_block
end