Index: /Code/ModelTranslator/resources/testdata/input/testModel.rsf
===================================================================
--- /Code/ModelTranslator/resources/testdata/input/testModel.rsf	(revision 374)
+++ /Code/ModelTranslator/resources/testdata/input/testModel.rsf	(revision 375)
@@ -1,4 +1,4 @@
 # A small test-model
-# Has 8 variables (2 of them are tristates, 1 string, 1 constant in constraints) and 7 constraints (1 string comparison)
+# Has 8 variables (2 of them are tristates, 1 string, 1 constant in constraints) and 8 constraints (1 string comparison)
 Item	a	boolean
 Item	b	boolean
@@ -13,4 +13,5 @@
 Depends	e	"f!='m' || 'UML'"
 Depends	f	"e!='m'"
+Depends	e	"f"
 Item	g	string
 Depends	c	"g='x86'"
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 374)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 375)
@@ -26,5 +26,5 @@
      * @throws ParserException If the conditions contains an operation, that is not supported by the parser.
      */
-    abstract ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(AbstractReader reader) throws ParserException;
+    abstract ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(RSFReader reader) throws ParserException;
     
     /**
Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 374)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 375)
@@ -1,11 +1,19 @@
 package de.uni_hildesheim.sse.trans.in.rsf;
+
+import java.util.ArrayList;
+import java.util.List;
 
 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.AbstractVariable;
 import de.uni_hildesheim.sse.model.varModel.DecisionVariableDeclaration;
 import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
+import de.uni_hildesheim.sse.model.varModel.filter.DeclrationInConstraintFinder;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
+import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
+import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory.EASyLogger;
 
 /**
@@ -20,9 +28,17 @@
  * <code>
  * NOT <i>variable</i> OR <i>condition</i>
- * </code>
+ * </code> <br />
+ * If condition contains a tristate variable and <i>variable</i> is a tristate variable, the following condition will
+ * be added with AND: <br />
+ * <code>
+ * NOT <i>variable_MODULE</i> OR <i>condition_variable_MODULE</i>
+ * </code> <br />
+ * TODO: what if it contains several tristate variables?
  * 
  * @author Adam Krafczyk
  */
 class RSFDependsCondition extends RSFCondition {
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFDependsCondition.class,
+            "RSFDependsCondition");
 
     private String variable;
@@ -44,5 +60,5 @@
     
     @Override
-    ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(AbstractReader reader) throws ParserException {
+    ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(RSFReader reader) throws ParserException {
         DecisionVariableDeclaration varDecl = reader.getVariable(variable);
         OCLFeatureCall notVar = new OCLFeatureCall(varPool.obtainVariable(varDecl), OclKeyWords.NOT);
@@ -54,4 +70,35 @@
         if (condition != null) {
             result = new OCLFeatureCall(notVar, OclKeyWords.OR, condition);
+            
+            List<RSFItem> tristates = new ArrayList<RSFItem>();
+            DeclrationInConstraintFinder declFinder = new DeclrationInConstraintFinder(condition);
+            for (AbstractVariable var : declFinder.getDeclarations()) {
+                RSFItem varItem = reader.getItemNoCreate(var.getName());
+                if (varItem != null && varItem.getDatatype().equals(Datatype.TRISTATE)) {
+                    tristates.add(varItem);
+                }
+            }
+            
+            if (tristates.size() > 1) {
+                // TODO: what to do?
+                LOGGER.debug("More than 1 tristate in Depends condition");
+            } else if (tristates.size() == 1) {
+                RSFItem item = reader.getItemNoCreate(variable);
+                if (item.getDatatype().equals(Datatype.TRISTATE)) {
+                    DecisionVariableDeclaration moduleVarDecl = reader.getVariable(variable + "_MODULE");
+                    Variable moduleVar = varPool.obtainVariable(moduleVarDecl);
+                    OCLFeatureCall notModuleVar = new OCLFeatureCall(moduleVar, OclKeyWords.NOT);
+                    
+                    DecisionVariableDeclaration conditionModuleVarDecl = reader.getVariable(tristates.get(0).getName()
+                            + "_MODULE");
+                    Variable conditionModuleVar = varPool.obtainVariable(conditionModuleVarDecl);
+                    
+                    result = new OCLFeatureCall(result, OclKeyWords.AND,
+                            new OCLFeatureCall(notModuleVar, OclKeyWords.OR, conditionModuleVar));
+                } else {
+                    // TODO: what to do?
+                    LOGGER.debug("Tristate variables in Depends condition but variable is not a tristate");
+                }
+            }
         }
         
Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 374)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 375)
@@ -55,5 +55,5 @@
     
     @Override
-    ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(AbstractReader reader) throws ParserException {
+    ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(RSFReader reader) throws ParserException {
         DecisionVariableDeclaration varDecl = reader.getVariable(variable);
         Variable var = varPool.obtainVariable(varDecl);
Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java	(revision 374)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java	(revision 375)
@@ -30,5 +30,5 @@
     
     @Override
-    ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(AbstractReader reader) throws ParserException {
+    ConstraintSyntaxTree toPureBooleanConstraintSyntaxTree(RSFReader reader) throws ParserException {
         Variable var = varPool.obtainVariable(reader.getVariable(variable));
         Variable moduleVar = varPool.obtainVariable(reader.getVariable(moduleVariable));
Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 374)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 375)
@@ -67,5 +67,5 @@
     
     /**
-     * Returns the specifies {@link RSFItem}, for the given name.
+     * Returns the specified {@link RSFItem} for the given name. Creates a new {@link RSFItem} if not already known.
      * @param name The name of the KConfig item.
      * @return The {@link RSFItem} representing the KConfig item.
@@ -79,4 +79,13 @@
         
         return item;
+    }
+    
+    /**
+     * Returns the specified {@link RSFItem} for the given name.
+     * @param name The name of the KConfig item.
+     * @return The {@link RSFItem} representing the KConfig item. <code>null</code> if not known.
+     */
+    RSFItem getItemNoCreate(String name) {
+        return items.get(name);
     }
 
Index: /Code/ModelTranslator/test/de/uni_hildesheim/sse/trans/in/rsf/RSFReaderTest.java
===================================================================
--- /Code/ModelTranslator/test/de/uni_hildesheim/sse/trans/in/rsf/RSFReaderTest.java	(revision 374)
+++ /Code/ModelTranslator/test/de/uni_hildesheim/sse/trans/in/rsf/RSFReaderTest.java	(revision 375)
@@ -38,6 +38,6 @@
         
         ConstraintFinder cFinder = new ConstraintFinder(project);
-        // 7 conditions + 2 _MODULE conditions
-        Assert.assertEquals(9, cFinder.getConstraints().size());
+        // 8 conditions + 2 _MODULE conditions
+        Assert.assertEquals(10, cFinder.getConstraints().size());
         
 //        for (Constraint c : cFinder.getConstraints()) {
