Index: /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskVisitor.java
===================================================================
--- /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskVisitor.java	(revision 1213)
@@ -18,5 +18,6 @@
 /**
  * <p>
- * TODO comment
+ * This is an implementation of the visitor pattern. Through this, it is possible to effectively
+ * process a task model. 
  * </p>
  * 
@@ -26,25 +27,54 @@
 
     /**
-     *
+     * <p>
+     * method called for each visited event task.
+     * </p>
+     * 
+     * @param eventTask the event task to be processed
      */
-    public void visit(IEventTask event);
+    public void visit(IEventTask eventTask);
     
     /**
-     *
+     * <p>
+     * method called for each visited iteration.
+     * </p>
+     * 
+     * @param iteration the iteration to be processed
      */
     public void visit(IIteration iteration);
     
     /**
-     *
+     * <p>
+     * method called for each visited optional.
+     * </p>
+     * 
+     * @param optional the optional to be processed
+     */
+    public void visit(IOptional optional);
+    
+    /**
+     * <p>
+     * method called for each visited selection.
+     * </p>
+     * 
+     * @param selection the selection to be processed
      */
     public void visit(ISelection selection);
     
     /**
-     *
+     * <p>
+     * method called for each visited sequence.
+     * </p>
+     * 
+     * @param sequence the sequence to be processed
      */
     public void visit(ISequence sequence);
 
     /**
-     *
+     * <p>
+     * method called for each other kind of visited task (implemented to support future versions).
+     * </p>
+     * 
+     * @param task the task to be processed
      */
     public void visit(ITask task);
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java	(revision 1213)
@@ -18,4 +18,5 @@
 
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
@@ -53,4 +54,11 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.TaskVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional)
+     */
+    public void visit(IOptional optional) {
+        checkTaskAndReturnIfPatternIsPresent(optional.getMarkedTask());
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence)
      */
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsInteractionPatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsInteractionPatternVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsInteractionPatternVisitor.java	(revision 1213)
@@ -17,4 +17,5 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
@@ -52,4 +53,11 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.TaskVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional)
+     */
+    public void visit(IOptional optional) {
+        checkTaskAndReturnIfPatternIsPresent(optional.getMarkedTask());
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence)
      */
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java	(revision 1213)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.usability.rules.patterns.InteractionPatternVisitor;
@@ -51,4 +52,11 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.TaskVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional)
+     */
+    public void visit(IOptional optional) {
+        optional.getMarkedTask().accept(this);
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence)
      */
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithInteractionPatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithInteractionPatternVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithInteractionPatternVisitor.java	(revision 1213)
@@ -17,4 +17,5 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
@@ -53,4 +54,11 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.TaskVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional)
+     */
+    public void visit(IOptional optional) {
+        this.present = containedPattern.containedIn(optional); 
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence)
      */
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java	(revision 1213)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.usability.rules.patterns.InteractionPatternVisitor;
@@ -51,4 +52,11 @@
     
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.TaskVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional)
+     */
+    public void visit(IOptional optional) {
+        optional.getMarkedTask().accept(this);
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence)
      */
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithInteractionPatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithInteractionPatternVisitor.java	(revision 1212)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithInteractionPatternVisitor.java	(revision 1213)
@@ -17,4 +17,5 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
@@ -53,4 +54,11 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.TaskVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional)
+     */
+    public void visit(IOptional optional) {
+        this.present = containedPattern.containedIn(optional);  
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor#visit(de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence)
      */
