# File lib/edi4r/diagrams.rb, line 473
    def seek!(seg) # Segment, Regexp or String expected
      name = (seg.is_a? EDI::Segment) ? seg.name : seg
      #    name = (seg.is_a? String) ? seg : seg.name
      begin
        node = self.node
        # print "Looking for #{name} in #{self.name} @ level #{self.level}..."
        #
        # Case "match"
        #
        if name === node.name # == name
          #        puts "match!"
          @coord.inst_cnt += 1
          msg = "Segment #{name} at #{@coord.to_s}: More than #{node.maxrep}!"
          if @coord.inst_cnt > node.maxrep
            raise EDI::EDILookupError, msg
          else
            @down_flag = true if node.is_a? TNode
            return self# .node
          end
        end
        #
        # Missed a required node?
        #
        if node.required? and @coord.inst_cnt == 0 # @unmatched
          msg = "Missing required segment #{node.name} at #{@coord.to_s}\n" + \
          " while looking for segment #{name}!"
          raise EDI::EDILookupError, msg
        end
        #      puts
      end while self.next!
      # Already at top level - Error condition!
      raise "End of diagram exceeded!"
    end