# File lib/dnsruby/message/section.rb, line 29
  def rrsets(type = nil, include_opt = false)
    if type && !(Types === type)
      type = Types.new(type)
    end
    ret = []
    each do |rr|
      next if (!include_opt && (rr.type == Types::OPT))
      #           if (type)
      #             next if ((rr.type == Types.RRSIG) && (type != Types.RRSIG) && (rr.type_covered != type))
      #             next if (rr.type != type)
      #           end
      if (type)
        #  if this is an rrsig type, then :
        #     only include it if the type_covered is the type requested,
        #     OR if the type requested is an RRSIG
        if rr.type == Types::RRSIG
          if (rr.type_covered == type) || (type == Types::RRSIG)
          else
            next
          end
          #               next if ((rr.type_covered != type) || (type != Types.RRSIG))
        elsif rr.type != type
          next
        end
      end

      found_rrset = false
      ret.each do |rrset|
        found_rrset = rrset.add(rr)
        break if found_rrset
      end
      unless found_rrset
        ret.push(RRSet.new(rr))
      end
    end
    ret
  end