docs: def add_record(self, record_in):
          """
          Add a new record.  Strip quotes from around strings.
  
          This will over-write if the key already exists, except
          for COMMENT and HISTORY fields
  
          parameters
          -----------
          record:
              The record, either a dict or a header card string
              or a FITSRecord or FITSCard
          convert: bool, optional
              If True, convert strings.  E.g. '3' gets
              converted to 3 and "'hello'" gets converted
              to 'hello' and 'T'/'F' to True/False. Default
              is False.
          """
          if (isinstance(record_in, dict) and
                  'name' in record_in and 'value' in record_in):
              record = {}
              record.update(record_in)
          else:
              record = FITSRecord(record_in)
  
          # only append when this name already exists if it is
          # a comment or history field, otherwise simply over-write
          key = record['name'].upper()
  
          key_exists = key in self._record_map
  
          if not key_exists or key in ('COMMENT', 'HISTORY', 'CONTINUE'):
              # append new record
              self._record_list.append(record)
              index = len(self._record_list)-1
              self._index_map[key] = index
          else:
              # over-write existing
              index = self._index_map[key]
              self._record_list[index] = record
  
          self._record_map[key] = record