diff --git a/src/main/java/leon/codegen/runtime/Tuple.java b/src/main/java/leon/codegen/runtime/Tuple.java
index 112b4fe7a72b95369c71f5f36d1e93c51a57118c..93ed1403275bfb1c4962f65ea0c7b763fe015b6f 100644
--- a/src/main/java/leon/codegen/runtime/Tuple.java
+++ b/src/main/java/leon/codegen/runtime/Tuple.java
@@ -20,4 +20,8 @@ public final class Tuple {
     }
     return this.elements[index];
   }
+
+  public final int getArity() {
+    return this.arity;
+  }
 }
diff --git a/src/main/scala/leon/codegen/CompilationUnit.scala b/src/main/scala/leon/codegen/CompilationUnit.scala
index b31c0f98bb1f4abfea7b520239d54613d39199d7..35b3a59eef3e8696ca078314182014164f635b9b 100644
--- a/src/main/scala/leon/codegen/CompilationUnit.scala
+++ b/src/main/scala/leon/codegen/CompilationUnit.scala
@@ -53,6 +53,14 @@ class CompilationUnit(val program: Program, val classes: Map[Definition, ClassFi
         case _ =>
           throw CompilationException("Unsupported return value : " + e)
       }
+
+    case tpl: runtime.Tuple =>
+      val elems = for (i <- 0 until tpl.getArity) yield {
+        javaToGroundExpr(tpl.get(i))
+      }
+
+      Tuple(elems)
+
     case _ => 
       throw CompilationException("MEH Unsupported return value : " + e.getClass)
   }