code: def thesis_info(self, key, value):
      
      def _get_degree_type(value):
          DEGREE_TYPES_MAP = {
              'RAPPORT DE STAGE': 'other',
              'INTERNSHIP REPORT': 'other',
              'DIPLOMA': 'diploma',
              'BACHELOR': 'bachelor',
              'LAUREA': 'laurea',
              'MASTER': 'master',
              'THESIS': 'other',
              'PHD': 'phd',
              'PDF': 'phd',
              'PH.D. THESIS': 'phd',
              'HABILITATION': 'habilitation',
          }
  
          b_value = force_single_element(value.get('b', ''))
          if b_value:
              return DEGREE_TYPES_MAP.get(b_value.upper(), 'other')
  
      def _get_institutions(value):
          c_values = force_list(value.get('c'))
          z_values = force_list(value.get('z'))
  
          # XXX: we zip only when they have the same length, otherwise
          #      we might match a value with the wrong recid.
          if len(c_values) != len(z_values):
              return [{'name': c_value} for c_value in c_values]
          else:
              return [{
                  'curated_relation': True,
                  'name': c_value,
                  'record': get_record_ref(z_value, 'institutions'),
              } for c_value, z_value in zip(c_values, z_values)]
  
      thesis_info = self.get('thesis_info', {})
  
      thesis_info['date'] = normalize_date(force_single_element(value.get('d')))
      thesis_info['degree_type'] = _get_degree_type(value)
      thesis_info['institutions'] = _get_institutions(value)
  
      return thesis_info
docs: Populate the ``thesis_info`` key.