class RDoc::Parser::Ruby

def collect_first_comment

def collect_first_comment
  skip_tkspace
  comment = ''.dup
  comment = RDoc::Encoding.change_encoding comment, @encoding if @encoding
  first_line = true
  first_comment_tk_kind = nil
  line_no = nil
  tk = get_tk
  while tk && (:on_comment == tk[:kind] or :on_embdoc == tk[:kind])
    comment_body = retrieve_comment_body(tk)
    if first_line and comment_body =~ /\A#!/ then
      skip_tkspace
      tk = get_tk
    elsif first_line and comment_body =~ /\A#\s*-\*-/ then
      first_line = false
      skip_tkspace
      tk = get_tk
    else
      break if first_comment_tk_kind and not first_comment_tk_kind === tk[:kind]
      first_comment_tk_kind = tk[:kind]
      line_no = tk[:line_no] if first_line
      first_line = false
      comment << comment_body
      tk = get_tk
      if :on_nl === tk then
        skip_tkspace_without_nl
        tk = get_tk
      end
    end
  end
  unget_tk tk
  new_comment comment, line_no
end