# File lib/edi4r/edifact.rb, line 1211
    def Message.parse (parent, segment_list)

      if parent.root.is_iedi?
        h, t, re_t = 'UIH', 'UIT', /^UIT/
      else
        h, t, re_t = 'UNH', 'UNT', /^UNT/
      end

      # Segments comprise a single message
      # Temporarily assign a parent, or else service segment lookup fails
      header  = parent.parse_segment(segment_list.shift, h)
      msg     = parent.new_message(header)
      trailer = msg.parse_segment( segment_list.pop, t )

      segment_list.each do |segbuf|
        seg = Segment.parse( msg, segbuf )
        if segbuf =~ re_t # FIXME: Should that case ever occur?
          msg.trailer = seg
        else
          msg.add(seg)
        end
      end
      msg.trailer = trailer
      msg
    end