Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 130)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 131)
@@ -49,35 +49,112 @@
     private ConstraintSyntaxTree getVariable(AbstractReader reader, String var, String originalVariable) {
         ConstraintSyntaxTree result = null;
-        // Negation
+        
         if (var.startsWith("!")) {
             var = var.substring(1);
             ConstraintSyntaxTree variable = getVariable(reader, var, originalVariable);
             result = new OCLFeatureCall(variable, OclKeyWords.NOT);
-            
-        // Comparison with constant booleans
-        } else if (var.endsWith("!='y'")) {
+        }
+        
+        if (result == null) {
+            result = handleConstantInVariable(reader, var, originalVariable);
+        }
+        
+        if (result == null) {
+            result = handleModuleInVariable(reader, var, originalVariable);
+        }
+        
+        if (result == null) {
+            result = handleStringInVariable(reader, var, originalVariable);
+        }
+        
+        if (result == null) {
+            // Remove ' around variable names
+            if (var.startsWith("'")) {
+                var = var.substring(1);
+            }
+            if (var.endsWith("'")) {
+                var = var.substring(0, var.length() - 1);
+            }
+            result = varPool.obtainVariable(reader.getVariable(var));
+        }
+        return result;
+    }
+    
+    /**
+     * Handles constants (='y' etc.) in a variable.
+     * @param reader The reader to read variable declarations from.
+     * @param var The string representing a variable.
+     * @param originalVariable The variable that depends on the condition.
+     * @return A {@link ConstraintSyntaxTree} if the variable contained a constant expression; <code>null</code>
+     *         otherwise
+     */
+    private ConstraintSyntaxTree handleConstantInVariable(AbstractReader reader, String var, String originalVariable) {
+        ConstraintSyntaxTree result = null;
+        if (var.endsWith("!='y'")) {
             var = var.substring(0, var.length() - "!='y'".length());
             result = getVariable(reader, "!" + var, originalVariable);
+            
         } else if (var.endsWith("='y'")) {
             var = var.substring(0, var.length() - "='y'".length());
             result = getVariable(reader, var, originalVariable);
+            
         } else if (var.endsWith("!='n'")) {
             var = var.substring(0, var.length() - "!='n'".length());
             result = getVariable(reader, var, originalVariable);
+            
         } else if (var.endsWith("='n'")) {
             var = var.substring(0, var.length() - "='n'".length());
             result = getVariable(reader, "!" + var, originalVariable);
             
-        // Comparison with module version
-        // Replace variable with it's _MODULE version (negate if needed)
-        } else if (var.endsWith("!='m'")) {
+        }
+        return result;
+    }
+    
+    /**
+     * Handles modules (='m', 'm' etc.) in a variable.
+     * @param reader The reader to read variable declarations from.
+     * @param var The string representing a variable.
+     * @param originalVariable The variable that depends on the condition.
+     * @return A {@link ConstraintSyntaxTree} if the variable contained a module expression; <code>null</code>
+     *         otherwise
+     */
+    private ConstraintSyntaxTree handleModuleInVariable(AbstractReader reader, String var, String originalVariable) {
+        ConstraintSyntaxTree result = null;
+        if (var.endsWith("!='m'")) {
             var = var.substring(0, var.length() - "!='m'".length());
             result = getVariable(reader, "!" + var + "_MODULE", originalVariable);
+            
         } else if (var.endsWith("='m'")) {
             var = var.substring(0, var.length() - "='m'".length());
             result = getVariable(reader, var + "_MODULE", originalVariable);
             
-        // Comparison with other constants (for strings and integers)
-        // Remove all ' and handle it as a new variable
+        } else if (var.equals("'m'")) {
+            result = getVariable(reader, originalVariable + "_MODULE", originalVariable);
+        }
+        return result;
+    }
+    
+    /**
+     * Handles strings (='Foo', !='' etc.) in a variable.
+     * @param reader The reader to read variable declarations from.
+     * @param var The string representing a variable.
+     * @param originalVariable The variable that depends on the condition.
+     * @return A {@link ConstraintSyntaxTree} if the variable contained a string comparison; <code>null</code>
+     *         otherwise
+     */
+    private ConstraintSyntaxTree handleStringInVariable(AbstractReader reader, String var, String originalVariable) {
+        ConstraintSyntaxTree result = null;
+        if (var.contains("!=''")) {
+            int index = var.indexOf("!=''");
+            var = var.substring(0, index);
+            
+            result = getVariable(reader, "!" + var + "_EMPTY", originalVariable);
+            
+        } else if (var.contains("=''")) {
+            int index = var.indexOf("!=''");
+            var = var.substring(0, index);
+            
+            result = getVariable(reader, var + "_EMPTY", originalVariable);
+            
         } else if (var.contains("!='")) {
             StringBuffer buffer = new StringBuffer(var);
@@ -86,5 +163,11 @@
                 buffer.deleteCharAt(index);
             }
+            
+            // move the ! to the beginning
+            index = buffer.indexOf("!=");
+            buffer.deleteCharAt(index);
+            
             result = getVariable(reader, "!" + buffer.toString(), originalVariable);
+            
         } else if (var.contains("='")) {
             StringBuffer buffer = new StringBuffer(var);
@@ -94,21 +177,4 @@
             }
             result = getVariable(reader, buffer.toString(), originalVariable);
-            
-            
-        // Module version of the variable
-        // Replace it with _MODULE version of original variable
-        } else if (var.equals("'m'")) {
-            result = getVariable(reader, originalVariable + "_MODULE", originalVariable);
-            
-        // Normal variable (or constant in ' (like 'UML'))
-        } else {
-            // Remove ' around variable names
-            if (var.startsWith("'")) {
-                var = var.substring(1);
-            }
-            if (var.endsWith("'")) {
-                var = var.substring(0, var.length() - 1);
-            }
-            result = varPool.obtainVariable(reader.getVariable(var));
         }
         return result;
