diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH2552/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH2552/Fixture.cs
new file mode 100644
index 00000000000..ead8cfc3788
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH2552/Fixture.cs
@@ -0,0 +1,224 @@
+//------------------------------------------------------------------------------
+//
+// 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.Collections.Generic;
+using System.Linq;
+using NHibernate.Stat;
+using NUnit.Framework;
+using NHCfg = NHibernate.Cfg;
+using NHibernate.Linq;
+
+namespace NHibernate.Test.NHSpecificTest.GH2552
+{
+ using System.Threading.Tasks;
+ using System.Threading;
+ [TestFixture]
+ public class FixtureAsync : BugTestCase
+ {
+ protected override string CacheConcurrencyStrategy => null;
+
+ protected override void Configure(NHCfg.Configuration configuration)
+ {
+ configuration.SetProperty(NHCfg.Environment.UseSecondLevelCache, "true");
+ configuration.SetProperty(NHCfg.Environment.GenerateStatistics, "true");
+ }
+
+ protected override void OnTearDown()
+ {
+ using (var s = OpenSession())
+ using (var tx = s.BeginTransaction())
+ {
+ s.CreateQuery("delete from DetailsByFK").ExecuteUpdate();
+ s.CreateQuery("delete from PersonByFK").ExecuteUpdate();
+ s.CreateQuery("delete from DetailsByRef").ExecuteUpdate();
+ s.CreateQuery("delete from PersonByRef").ExecuteUpdate();
+
+ tx.Commit();
+ }
+
+ Sfi.Evict(typeof(PersonByFK));
+ Sfi.Evict(typeof(DetailsByFK));
+ Sfi.Evict(typeof(PersonByRef));
+ Sfi.Evict(typeof(DetailsByRef));
+ }
+
+ private async Task OneToOneFetchTestAsync(CancellationToken cancellationToken = default(CancellationToken)) where TPerson : Person, new() where TDetails : Details, new()
+ {
+ List