diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH2508/AuditEventListener.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH2508/AuditEventListener.cs
new file mode 100644
index 00000000000..3c2aaac0566
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH2508/AuditEventListener.cs
@@ -0,0 +1,46 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using NHibernate.Cfg;
+using NHibernate.Event;
+using NHibernate.Persister.Entity;
+
+namespace NHibernate.Test.NHSpecificTest.GH2508
+{
+ public partial class AuditEventListener : IPreCollectionUpdateEventListener
+ {
+ public Task OnPreUpdateCollectionAsync(PreCollectionUpdateEvent @event, CancellationToken cancellationToken)
+ {
+ try
+ {
+ var ownerEntity = @event.AffectedOwnerOrNull;
+ var collectionEntry = @event.Session.PersistenceContext.GetCollectionEntry(@event.Collection);
+ if (!collectionEntry.LoadedPersister.IsInverse)
+ return Task.CompletedTask;
+
+ var abstractCollectionPersister = collectionEntry.LoadedPersister as Persister.Collection.AbstractCollectionPersister;
+ if (abstractCollectionPersister == null)
+ return Task.CompletedTask;
+
+ var ownerEntityPersister = abstractCollectionPersister.OwnerEntityPersister;
+ ownerEntityPersister.GetPropertyValues(ownerEntity);
+ return Task.CompletedTask;
+ }
+ catch (Exception ex)
+ {
+ return Task.FromException