docs: def add(self, tag, data=None, indicators=None, **kwargs):
          """
          Add a field to a record. Example:
  
          marc.add('020', a='0201657880', z='0201802398')
          """
          if tag.startswith("00") and (data is None or data == "") and not self.strict:
              return
  
          if data:
              if indicators:
                  raise ValueError(Record.E_NO_INDICATORS)
              if not tag.startswith('00'):
                  raise ValueError(Record.E_NO_DATA)
          else:
              if tag.startswith('00'):
                  raise ValueError(Record.E_EMPTY)
  
          if tag.startswith('00') and kwargs:
              raise ValueError(Record.E_NO_SUBFIELDS)
  
          if indicators is None:
              indicators = [' ', ' ']
          if isinstance(indicators, basestring):
              if len(indicators) == 2:
                  indicators = [indicators[0], indicators[1]]
              else:
                  raise ValueError(Record.E_INVALID_INDICATOR)
  
          if data:  # == control field (001 -- 009)
              field = pymarc.Field(tag, data=data)
          else:     # == non-control field (010 -- 999)
              if 'subfields' in kwargs:
                  sfs = kwargs['subfields']
                  subfields = [v for sl in [(a, b) for a, b in zip(sfs[::2], sfs[1::2]) if b] for v in sl]
              else:
                  subfields = []
                  for key, value in kwargs.items():
                      if value is None:
                          continue
                      key = key.replace('_', '')
                      if isinstance(value, basestring):
                          if value == "":
                              continue
                          subfields += [key, value]
                      elif isinstance(value, collections.Iterable):
                          for val in value:
                              if not isinstance(val, basestring):
                                  raise ValueError('subfield values must be strings')
                              if val:
                                  subfields += [key, val]
                      else:
                          raise ValueError('subfield values must be strings')
  
              if not any(subfields[1::2]):
                  if self.strict:
                      raise ValueError('none of the subfields contains a value')
                  else:
                      return
  
              field = pymarc.Field(tag, indicators, subfields=subfields)
          self.add_field(field)