Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 415)
@@ -7,5 +7,4 @@
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
@@ -189,5 +188,5 @@
 
     @Override
-    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(RSFReader reader) {
         // TODO implement
         return null;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 415)
@@ -10,5 +10,4 @@
 import de.uni_hildesheim.sse.model.varModel.DecisionVariableDeclaration;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.trans.in.ParserException.ParserExceptionType;
@@ -42,5 +41,5 @@
      *         combined with AND. empty if expression is optimized out.
      */
-    abstract List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader);
+    abstract List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(RSFReader reader);
     
     /**
@@ -293,5 +292,5 @@
      * @return A {@link ConstraintSyntaxTree} representing the condition. <code>null</code> if always true.
      */
-    protected ConstraintSyntaxTree getNotBooleanConstraintSyntaxTree(AbstractReader reader, String condition,
+    protected ConstraintSyntaxTree getNotBooleanConstraintSyntaxTree(RSFReader reader, String condition,
             String variable) {
         // TODO implement
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 415)
@@ -7,5 +7,4 @@
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
@@ -170,5 +169,5 @@
 
     @Override
-    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(RSFReader reader) {
         // TODO Implement
         return null;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 415)
@@ -10,5 +10,4 @@
 import de.uni_hildesheim.sse.model.varModel.DecisionVariableDeclaration;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 
@@ -107,5 +106,5 @@
     
     @Override
-    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(RSFReader reader) {
         List<ConstraintSyntaxTree> trees = new ArrayList<ConstraintSyntaxTree>();
         
@@ -127,5 +126,5 @@
             break;
         case TRISTATE:
-            notVar = new OCLFeatureCall(var, OclKeyWords.EQUALS, new ConstantValue(RSFReader.TRI_UNDEFINED));
+            notVar = new OCLFeatureCall(var, OclKeyWords.EQUALS, RSFReader.TRI_UNDEFINED);
             break;
         case STRING:
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 415)
@@ -6,6 +6,6 @@
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
+import de.uni_hildesheim.sse.model.cst.Variable;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 
@@ -96,7 +96,54 @@
     
     @Override
-    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
-        // TODO implement
-        return null;
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(RSFReader reader) {
+        List<ConstraintSyntaxTree> trees = new ArrayList<ConstraintSyntaxTree>();
+        
+        ConstraintSyntaxTree condition = getNotBooleanConstraintSyntaxTree(reader, this.condition, variable.getName());
+        
+        RSFItem selectedItem = reader.getItemNoCreate(selectedVariable);
+        if (selectedItem.getDatatype() == Datatype.TRISTATE
+                && variable.getDatatype() == Datatype.TRISTATE) {
+            
+            Variable selectedVar = varPool.obtainVariable(reader.getVariable(selectedVariable));
+            Variable var = varPool.obtainVariable(reader.getVariable(variable.getName()));
+            
+            ConstraintSyntaxTree varModule = new OCLFeatureCall(var, OclKeyWords.EQUALS, RSFReader.TRI_MODULE);
+            ConstraintSyntaxTree varDefined = new OCLFeatureCall(var, OclKeyWords.EQUALS, RSFReader.TRI_DEFINED);
+            
+            ConstraintSyntaxTree selectedVarModule = new OCLFeatureCall(
+                    selectedVar, OclKeyWords.EQUALS, RSFReader.TRI_MODULE);
+            ConstraintSyntaxTree selectedVarDefined = new OCLFeatureCall(
+                    selectedVar, OclKeyWords.EQUALS, RSFReader.TRI_DEFINED);
+            
+            if (condition != null) {
+                OCLFeatureCall varDefinedAndCondition = new OCLFeatureCall(varDefined, OclKeyWords.AND, condition);
+                OCLFeatureCall varModuleAndCondition = new OCLFeatureCall(varModule, OclKeyWords.AND, condition);
+                trees.add(new OCLFeatureCall(varDefinedAndCondition, OclKeyWords.IMPLIES, selectedVarDefined));
+                trees.add(new OCLFeatureCall(varModuleAndCondition, OclKeyWords.IMPLIES, selectedVarModule));
+            } else {
+                trees.add(new OCLFeatureCall(varDefined, OclKeyWords.IMPLIES, selectedVarDefined));
+                trees.add(new OCLFeatureCall(varModule, OclKeyWords.IMPLIES, selectedVarModule));
+            }
+            
+//        } else if (selectedItem.getDatatype() == Datatype.TRISTATE
+//                || variable.getDatatype() == Datatype.TRISTATE) {
+//            
+            // TODO: error?
+            
+        } else {
+            Variable selectedVar = varPool.obtainVariable(reader.getVariable(selectedVariable));
+            Variable var = varPool.obtainVariable(reader.getVariable(variable.getName()));
+            // TODO: strings
+            
+            if (condition != null) {
+                OCLFeatureCall varAndCondition = new OCLFeatureCall(var, OclKeyWords.AND, condition);
+                trees.add(new OCLFeatureCall(varAndCondition, OclKeyWords.IMPLIES, selectedVar));
+            } else {
+                trees.add(new OCLFeatureCall(var, OclKeyWords.IMPLIES, selectedVar));
+            }
+        }
+        
+        
+        return trees;
     }
     
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java	(revision 415)
@@ -8,5 +8,4 @@
 import de.uni_hildesheim.sse.model.cst.Variable;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 
@@ -48,5 +47,5 @@
     
     @Override
-    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(RSFReader reader) {
         // No extra conditions needed since we have a tristate
         return new ArrayList<ConstraintSyntaxTree>();
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 414)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 415)
@@ -12,4 +12,5 @@
 
 import de.uni_hildesheim.sse.model.cst.CSTSemanticException;
+import de.uni_hildesheim.sse.model.cst.ConstantValue;
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.Variable;
@@ -40,7 +41,7 @@
 public class RSFReader extends AbstractReader {
     static final Enum TRISTATE = new Enum("Tristate", null, "Undefined", "Defined", "Module");
-    static final Value TRI_UNDEFINED;
-    static final Value TRI_DEFINED;
-    static final Value TRI_MODULE;
+    static final ConstantValue TRI_UNDEFINED;
+    static final ConstantValue TRI_DEFINED;
+    static final ConstantValue TRI_MODULE;
     
     static {
@@ -51,5 +52,5 @@
             e.printStackTrace();
         }
-        TRI_UNDEFINED = val;
+        TRI_UNDEFINED = new ConstantValue(val);
         
         val = null;
@@ -59,5 +60,5 @@
             e.printStackTrace();
         }
-        TRI_DEFINED = val;
+        TRI_DEFINED = new ConstantValue(val);
         
         val = null;
@@ -67,5 +68,5 @@
             e.printStackTrace();
         }
-        TRI_MODULE = val;
+        TRI_MODULE = new ConstantValue(val);
     }
     
