code: private <T> void fireEvent(StorageChangeEvent.ChangeType changeType, StorageKey<T> key, T value, T oldVal, String data, String oldData) {
      UncaughtExceptionHandler ueh = GWT.getUncaughtExceptionHandler();
      if (handlers != null && !handlers.isEmpty()) {
        T oldValue = oldVal;
        if (oldValue == null && oldData != null && StorageChangeEvent.Level.OBJECT.equals(eventLevel)) {    
          try {
            oldValue = StorageUtils.deserialize(key.getClazz(), data);
          } catch (SerializationException e) {
            if (ueh != null)
              ueh.onUncaughtException(e);
            oldValue = null;
          }
        }
  
        final StorageChangeEvent event = new StorageChangeEvent(changeType, key, value, oldValue, data, oldData);
        for (StorageChangeEvent.Handler handler : handlers) {
          try{
            handler.onStorageChange(event);
          }catch(Exception e){
            if(ueh != null){
              ueh.onUncaughtException(e);
            }
          }
        }
      }
    }
docs: Fire {@link StorageChangeEvent}