code: private void notifyPrioritizedObservers(final M data) throws CouldNotPerformException {
          try {
              internalPrioritizedDataObservable.notifyObservers(data);
          } catch (CouldNotPerformException ex) {
              throw ex;
          } finally {
              long newTransactionId = (Long) getDataField(TransactionIdProvider.TRANSACTION_ID_FIELD_NAME);
  
              // warn if the transaction id is outdated, additionally the 0 transaction is accepted which is broadcast during the controller startup after.
              if (newTransactionId < transactionId && transactionId != 0) {
                  logger.warn("RemoteService {} received a data object with an older transaction id {} than {}", this, newTransactionId, transactionId);
              }
              transactionId = newTransactionId;
          }
      }
docs: Notify all observers registered on the prioritized observable and retrieve the new transaction id.
  The transaction id is updated here to guarantee that the prioritized observables have been notified before
  transaction sync futures return.
  
  @param data the data type notified.
  
  @throws CouldNotPerformException if notification fails or no transaction id could be extracted.