diff --git a/src/main/scala/leon/purescala/SimplifierWithPaths.scala b/src/main/scala/leon/purescala/SimplifierWithPaths.scala
index 481cee54b5717a4ec836486300bbd6817c88614f..6353c6d9069a859dc1c863ad5abb3f47fa130f80 100644
--- a/src/main/scala/leon/purescala/SimplifierWithPaths.scala
+++ b/src/main/scala/leon/purescala/SimplifierWithPaths.scala
@@ -113,7 +113,8 @@ class SimplifierWithPaths(sf: SolverFactory[Solver]) extends TransformerWithPC {
       }
       newCases match {
         case List() => Error("Unreachable code").copiedFrom(e)
-        case List(theCase) => 
+        case List(theCase) if !scrut.getType.isInstanceOf[AbstractClassType] => 
+          // Avoid AbstractClassType as it may lead to invalid field accesses
           replaceFromIDs(mapForPattern(scrut, theCase.pattern), theCase.rhs)
         case _ => MatchExpr(rs, newCases).copiedFrom(e)
       }
diff --git a/src/test/resources/regression/transformations/SimplifyPaths.scala b/src/test/resources/regression/transformations/SimplifyPaths.scala
index 245e06f9435a5f7fe630d2fcba4f119d148c3da1..792b6d4a2d0846afd90d34dae41193e62876db8e 100644
--- a/src/test/resources/regression/transformations/SimplifyPaths.scala
+++ b/src/test/resources/regression/transformations/SimplifyPaths.scala
@@ -81,4 +81,13 @@ object Transform {
       a._1
     }
 
+    def input07(l : List[Int]) : Int = l match {
+      case Nil() if false => 42
+      case Cons(h,t) => h
+    }
+
+    def output07(l : List[Int]) : Int = l match {
+      case Cons(h,t) => h
+    }
+
 }