Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter.java	(revision 68)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter.java	(revision 69)
@@ -5,5 +5,7 @@
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
@@ -39,4 +41,22 @@
 
     private Project project;
+    private Map<AbstractVariable, Variable> variablesCache = new HashMap<AbstractVariable, Variable>();
+    
+    /**
+     * Returns a {@link Variable} for the given {@link AbstractVariable}.
+     * This method will cache already created {@link Variable}s to reduce memory consumption.
+     * @param decl A {@link AbstractVariable} for which a {@link Variable} shall be created.
+     * @return A cached {@link Variable} for the given {@link AbstractVariable} or a new one
+     *     if no cached variable exists, a new one is created and will be cached for future calls.
+     */
+    protected final Variable getVariable(AbstractVariable decl) {
+        Variable variable = variablesCache.get(decl);
+        if (null == variable) {
+            variable = new Variable(decl);
+            variablesCache.put(decl, variable);
+        }
+        
+        return variable;
+    }
     
     @Override
@@ -73,5 +93,5 @@
             constraintCopy = new Constraint(originalConstraint, singleConstraintProject);
         } catch (CSTSemanticException e) {
-            // TODO (can this even happen?)
+            // Cannot happen
             LOGGER.exception(e);
         }
