class RDoc::Markup::Parser

def build_list_item indent, item_type = nil

def build_list_item indent, item_type = nil
  p :list_item_start => [indent, item_type] if @debug
  list_item = RDoc::Markup::ListItem.new item_type
  until @tokens.empty? do
    type, data, column = get
    if column < indent and
       not type == :NEWLINE and
       (type != :INDENT or data < indent) then
      unget
      break
    end
    case type
    when :INDENT then
      unget
      list_item.push(*parse(indent))
    when :TEXT then
      unget
      list_item << build_paragraph(indent)
    when :HEADER then
      list_item << build_heading(data)
    when :NEWLINE then
      list_item << RDoc::Markup::BlankLine.new
    when *LIST_TOKENS then
      unget
      list_item << build_list(column)
    else
      raise ParseError, "Unhandled token #{@current_token.inspect}"
    end
  end
  p :list_item_end => [indent, item_type] if @debug
  return nil if list_item.empty?
  list_item.parts.shift if
    RDoc::Markup::BlankLine === list_item.parts.first and
    list_item.length > 1
  list_item
end