docs: def authors2marc(self, key, value):
      """Populate the ``100`` MARC field.
  
      Also populates the ``700`` and the ``701`` MARC fields through side effects.
      """
      value = force_list(value)
  
      def _get_ids(value):
          ids = {
              'i': [],
              'j': [],
          }
          if value.get('ids'):
              for _id in value.get('ids'):
                  if _id.get('schema') == 'INSPIRE ID':
                      ids['i'].append(_id.get('value'))
                  elif _id.get('schema') == 'ORCID':
                      ids['j'].append('ORCID:' + _id.get('value'))
                  elif _id.get('schema') == 'JACOW':
                      ids['j'].append(_id.get('value'))
                  elif _id.get('schema') == 'CERN':
                      ids['j'].append('CCID-' + _id.get('value')[5:])
          return ids
  
      def _get_affiliations(value):
          return [
              aff.get('value') for aff in value.get('affiliations', [])
          ]
  
      def _get_affiliations_identifiers(value):
          return [
              u'{}:{}'.format(aff.get('schema'), aff.get('value')) for aff in value.get('affiliations_identifiers', [])
          ]
  
      def _get_inspire_roles(value):
          values = force_list(value.get('inspire_roles'))
          return ['ed.' for role in values if role == 'editor']
  
      def _get_raw_affiliations(value):
          return [
              aff.get('value') for aff in value.get('raw_affiliations', [])
          ]
  
      def get_value_100_700(value):
          ids = _get_ids(value)
          return {
              'a': value.get('full_name'),
              'e': _get_inspire_roles(value),
              'q': value.get('alternative_names'),
              'i': ids.get('i'),
              'j': ids.get('j'),
              'm': value.get('emails'),
              't': _get_affiliations_identifiers(value),
              'u': _get_affiliations(value),
              'v': _get_raw_affiliations(value),
          }
  
      def get_value_701(value):
          ids = _get_ids(value)
          return {
              'a': value.get('full_name'),
              'q': value.get('alternative_names'),
              'i': ids.get('i'),
              'j': ids.get('j'),
              'u': _get_affiliations(value),
              'v': _get_raw_affiliations(value),
          }
  
      if len(value) > 1:
          self["700"] = []
          self["701"] = []
  
      for author in value[1:]:
          is_supervisor = 'supervisor' in author.get('inspire_roles', [])
          if is_supervisor:
              self["701"].append(get_value_701(author))
          else:
              self["700"].append(get_value_100_700(author))
      return get_value_100_700(value[0])