code: def add(self, rd, ttl=None):
          
  
          #
          # If we're adding a signature, do some special handling to
          # check that the signature covers the same type as the
          # other rdatas in this rdataset.  If this is the first rdata
          # in the set, initialize the covers field.
          #
          if self.rdclass != rd.rdclass or self.rdtype != rd.rdtype:
              raise IncompatibleTypes
          if not ttl is None:
              self.update_ttl(ttl)
          if self.rdtype == dns.rdatatype.RRSIG or \
             self.rdtype == dns.rdatatype.SIG:
              covers = rd.covers()
              if len(self) == 0 and self.covers == dns.rdatatype.NONE:
                  self.covers = covers
              elif self.covers != covers:
                  raise DifferingCovers
          if dns.rdatatype.is_singleton(rd.rdtype) and len(self) > 0:
              self.clear()
          super(Rdataset, self).add(rd)
docs: Add the specified rdata to the rdataset.
  
          If the optional I{ttl} parameter is supplied, then
          self.update_ttl(ttl) will be called prior to adding the rdata.
  
          @param rd: The rdata
          @type rd: dns.rdata.Rdata object
          @param ttl: The TTL
          @type ttl: int