code: def document_type(self, key, value):
      
      schema = load_schema('hep')
      publication_type_schema = schema['properties']['publication_type']
      valid_publication_types = publication_type_schema['items']['enum']
  
      document_type = self.get('document_type', [])
      publication_type = self.get('publication_type', [])
  
      a_values = force_list(value.get('a'))
      for a_value in a_values:
          normalized_a_value = a_value.strip().lower()
  
          if normalized_a_value == 'arxiv':
              continue  # XXX: ignored.
          elif normalized_a_value == 'citeable':
              self['citeable'] = True
          elif normalized_a_value == 'core':
              self['core'] = True
          elif normalized_a_value == 'noncore':
              self['core'] = False
          elif normalized_a_value == 'published':
              self['refereed'] = True
          elif normalized_a_value == 'withdrawn':
              self['withdrawn'] = True
          elif normalized_a_value == 'deleted':
              self['deleted'] = True
          elif normalized_a_value in COLLECTIONS_MAP:
              self.setdefault('_collections', []).append(COLLECTIONS_MAP[normalized_a_value])
          elif normalized_a_value in DOCUMENT_TYPE_MAP:
              document_type.append(DOCUMENT_TYPE_MAP[normalized_a_value])
          elif normalized_a_value in valid_publication_types:
              publication_type.append(normalized_a_value)
  
      c_value = force_single_element(value.get('c', ''))
      normalized_c_value = c_value.strip().lower()
  
      if normalized_c_value == 'deleted':
          self['deleted'] = True
  
      self['publication_type'] = publication_type
      return document_type
docs: Populate the ``document_type`` key.
  
      Also populates the ``_collections``, ``citeable``, ``core``, ``deleted``,
      ``refereed``, ``publication_type``, and ``withdrawn`` keys through side
      effects.