diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH1879/ExpansionRegressionTests.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH1879/ExpansionRegressionTests.cs
new file mode 100644
index 00000000000..86c809a8c1d
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH1879/ExpansionRegressionTests.cs
@@ -0,0 +1,101 @@
+//------------------------------------------------------------------------------
+//
+// 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 System.Collections.ObjectModel;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using NHibernate.Cfg;
+using NHibernate.Hql.Ast;
+using NHibernate.Linq.Functions;
+using NHibernate.Linq.Visitors;
+using NHibernate.Util;
+using NUnit.Framework;
+using NHibernate.Linq;
+
+namespace NHibernate.Test.NHSpecificTest.GH1879
+{
+ using System.Threading.Tasks;
+ [TestFixture]
+ public class ExpansionRegressionTestsAsync : GH1879BaseFixtureAsync
+ {
+ protected override void OnSetUp()
+ {
+ using (var session = OpenSession())
+ using (var transaction = session.BeginTransaction())
+ {
+ session.Save(new Invoice { InvoiceNumber = 1, Amount = 10, SpecialAmount = 100, Paid = false });
+ session.Save(new Invoice { InvoiceNumber = 2, Amount = 10, SpecialAmount = 100, Paid = true });
+ session.Save(new Invoice { InvoiceNumber = 2, Amount = 10, SpecialAmount = 110, Paid = false });
+ session.Save(new Invoice { InvoiceNumber = 2, Amount = 10, SpecialAmount = 110, Paid = true });
+
+ session.Flush();
+ transaction.Commit();
+ }
+ }
+
+ protected override void Configure(Configuration configuration)
+ {
+ configuration.LinqToHqlGeneratorsRegistry();
+ }
+
+ private class TestLinqToHqlGeneratorsRegistry : DefaultLinqToHqlGeneratorsRegistry
+ {
+ public TestLinqToHqlGeneratorsRegistry()
+ {
+ this.Merge(new ObjectEquality());
+ }
+ }
+
+ private class ObjectEquality : IHqlGeneratorForMethod
+ {
+ public HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
+ {
+ return treeBuilder.Equality(visitor.Visit(targetObject).AsExpression(), visitor.Visit(arguments[0]).AsExpression());
+ }
+
+ public IEnumerable SupportedMethods
+ {
+ get
+ {
+ yield return ReflectHelper.GetMethodDefinition