code: def apply(cls, value, prop, visitor):
          
          return (
              None if isinstance(value, (AttributeError, KeyError)) else
              value
          )
docs: apply' is a general place to put a function which is called on
          every extant record slot.  This is usually the most important function
          to implement when sub-classing.
  
          The default implementation passes through the slot value as-is, but
          expected exceptions are converted to ``None``.
  
          args:
  
              ``value=``\ *value*\ \|\ *AttributeError*\ \|\ *KeyError*
                  This is the value currently in the slot, or the Record itself
                  with the ``apply_records`` visitor option.  *AttributeError*
                  will only be received if you passed ``apply_empty_slots``, and
                  *KeyError* will be passed if ``parent_obj`` is a ``dict`` (see
                  :py:meth:`Visitor.map_prop` for details about when this might
                  happen)
  
              ``prop=``\ *Property*\ \|\ ``None``
                  This is the :py:class:`normalize.Property` instance which
                  represents the field being traversed.
  
                  This can be ``None`` when being applied over Collection
                  instances, where the type of the contents is not a Record.
  
              ``visitor=``\ *Visitor*
                  This object can be used to inspect parameters of the current
                  run, such as options which control which kinds of values are
                  visited, which fields are being visited and where the function
                  is in relation to the starting point.