code: def set(self, key, original_value):
      field = self._destination_cls._precord_fields.get(key)
      if field:
          if (
              self._factory_fields is None
              or field in self._factory_fields
          ):
              try:
                  if is_field_ignore_extra_complaint(
                      PRecord, field, self._ignore_extra
                  ):
                      value = field.factory(
                          original_value,
                          ignore_extra=self._ignore_extra,
                      )
                  else:
                      value = field.factory(original_value)
              except InvariantException as e:
                  self._invariant_error_codes += e.invariant_errors
                  self._missing_fields += e.missing_fields
                  return self
          else:
              value = original_value
  
          check_type(self._destination_cls, field, key, value)
  
          is_ok, error_code = field.invariant(value)
          if not is_ok:
              self._invariant_error_codes.append(error_code)
  
          return super(_PRecordEvolver, self).set(key, value)
      else:
          raise AttributeError(
              "'{0}' is not among the specified fields for {1}".format(
                  key, self._destination_cls.__name__
              )
          )
  
imports: import six
  from pyrsistent._checked_types import CheckedType, _restore_pickle, InvariantException, store_invariants
  from pyrsistent._field_common import set_fields, check_type, is_field_ignore_extra_complaint, PFIELD_NO_INITIAL, serialize, check_global_invariants
  from pyrsistent._pmap import PMap, pmap
label_desc: Use image node_id 3 for calling the _PRecordEvolver obj's underlying member method code with example usage: obj.set(key, original_value) and returns: super, self