docs: def specbits(self):
          """Returns the array of arguments that would be given to
          iptables for the current Rule.
          """
          def host_bits(opt, optval):
              # handle the case where this is a negated value
              m = re.match(r'^!\s*(.*)', optval)
              if m:
                  return ['!', opt, m.group(1)]
              else:
                  return [opt, optval]
  
          bits = []
          if self.protocol:
              bits.extend(host_bits('-p', self.protocol))
          if self.in_interface:
              bits.extend(host_bits('-i', self.in_interface))
          if self.out_interface:
              bits.extend(host_bits('-o', self.out_interface))
          if self.source:
              bits.extend(host_bits('-s', self.source))
          if self.destination:
              bits.extend(host_bits('-d', self.destination))
          for mod in self.matches:
              bits.extend(['-m', mod.name()])
              bits.extend(mod.specbits())
          if self.goto:
              bits.extend(['-g', self.goto.name()])
              bits.extend(self.goto.specbits())
          elif self.jump:
              bits.extend(['-j', self.jump.name()])
              bits.extend(self.jump.specbits())
          return bits