docs: public void updateCache( final WorkspaceCache workspace, final ChangeSet changes, Transaction transaction ) {
          if (changes == null || changes.isEmpty()) {
              return;
          }
          if (transaction instanceof SynchronizedTransaction) {
              // only issue the changes when the transaction is successfully committed
              transaction.uponCommit(() -> workspace.changed(changes));
              if (workspace instanceof TransactionalWorkspaceCache) {
                  ((TransactionalWorkspaceCache) workspace).changedWithinTransaction(changes);
              }
          } else if (transaction instanceof RollbackOnlyTransaction) {
              // The transaction has been marked for rollback only, so no need to even capture these changes because
              // no changes will ever escape the Session ...
          } else {
              // in all other cases we want to dispatch the changes immediately
              workspace.changed(changes);
          }
      }