diff --git a/src/main/scala/leon/purescala/ExprOps.scala b/src/main/scala/leon/purescala/ExprOps.scala
index 84b1957b56615694992bbdbd8e588218876b8cb1..2f1c610c067c6a99bd0135f5b2aeef0f5e1d1279 100644
--- a/src/main/scala/leon/purescala/ExprOps.scala
+++ b/src/main/scala/leon/purescala/ExprOps.scala
@@ -1112,17 +1112,17 @@ object ExprOps {
     case ArrayType(tpe)             => EmptyArray(tpe)
 
     case act @ AbstractClassType(acd, tpe) =>
-      val children = act.knownCCDescendants
+      val ccDesc = act.knownCCDescendants
 
       def isRecursive(cct: CaseClassType): Boolean = {
         cct.fieldsTypes.exists{
-          case AbstractClassType(fieldAcd, _) => acd == fieldAcd
-          case CaseClassType(fieldCcd, _) => acd == fieldCcd
+          case AbstractClassType(fieldAcd, _) => acd.root == fieldAcd.root
+          case CaseClassType(fieldCcd, _) => acd.root == fieldCcd.root
           case _ => false
         }
       }
 
-      val nonRecChildren = children.filterNot(isRecursive).sortBy(_.fields.size)
+      val nonRecChildren = ccDesc.filterNot(isRecursive).sortBy(_.fields.size)
 
       nonRecChildren.headOption match {
         case Some(cct) =>