diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3472/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3472/Fixture.cs
new file mode 100644
index 00000000000..fb8d95d5d49
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3472/Fixture.cs
@@ -0,0 +1,152 @@
+//------------------------------------------------------------------------------
+//
+// 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.Collections.Generic;
+using NHibernate.Criterion;
+using NHibernate.SqlCommand;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH3472
+{
+ using System.Threading.Tasks;
+ [TestFixture]
+ public class FixtureAsync : BugTestCase
+ {
+ protected override void OnSetUp()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var c = new Cat
+ {
+ Age = 6,
+ Children = new HashSet
+ {
+ new Cat
+ {
+ Age = 4,
+ Children = new HashSet
+ {
+ new Cat { Color = "Ginger", Age = 1 },
+ new Cat { Color = "Black", Age = 3 }
+ }
+ }
+ }
+ };
+ s.Save(c);
+ t.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ s.Delete("from Cat");
+ t.Commit();
+ }
+ }
+
+ [Test]
+ public async Task CriteriaQueryWithMultipleJoinsToSameAssociationAsync()
+ {
+ using (var s = OpenSession())
+ {
+ var list =
+ await (s
+ .CreateCriteria("cat")
+ .CreateAlias(
+ "cat.Children",
+ "gingerCat",
+ JoinType.LeftOuterJoin,
+ Restrictions.Eq("Color", "Ginger"))
+ .CreateAlias(
+ "cat.Children",
+ "blackCat",
+ JoinType.LeftOuterJoin,
+ Restrictions.Eq("Color", "Black"))
+ .SetProjection(
+ Projections.Alias(Projections.Property("gingerCat.Age"), "gingerCatAge"),
+ Projections.Alias(Projections.Property("blackCat.Age"), "blackCatAge")
+ ).AddOrder(new Order(Projections.Property("Age"), true)).ListAsync