@Override
 public void event(MapEvent<String, byte[]> event) {
   if (event.key().equals(name)) {
     final MeteringAgent.Context newTimer = monitor.startTimer(NOTIFY_LISTENER);
     byte[] rawNewValue = Versioned.valueOrNull(event.newValue());
     byte[] rawOldValue = Versioned.valueOrNull(event.oldValue());
     try {
       listener.event(
           new AtomicValueEvent<>(
               name,
               rawNewValue == null ? null : serializer.decode(rawNewValue),
               rawOldValue == null ? null : serializer.decode(rawOldValue)));
       newTimer.stop(null);
     } catch (Exception e) {
       newTimer.stop(e);
       Throwables.propagate(e);
     }
   }
 }