Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullNode.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullNode.java	(revision 1173)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//   Copyright 2012 Georg-August-Universität Göttingen, Germany
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-
-package de.ugoe.cs.autoquest.usability.util;
-
-import org.apache.commons.lang.StringUtils;
-
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskVisitor;
-
-/**
- * <p>
- * TODO comment
- * </p>
- * 
- * @author Alexander Deicke
- */
-public class NullNode implements ITask {
-
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -3325477932754494485L;
-
-	@Override
-	public int getId() {
-		return 0;
-	}
-	
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#getName()
-     */
-    public String getName() {
-        return StringUtils.EMPTY;
-    }
-
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#getDescription()
-     */
-    public String getDescription() {
-        return StringUtils.EMPTY;
-    }
-
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#equals(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode)
-     */
-    public boolean equals(ITask task) {
-        return false;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#clone()
-     */
-    @Override
-    public NullNode clone() {
-        return (NullNode) this;
-    }
-
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#accept(de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor)
-     */
-    public void accept(ITaskVisitor visitor) {
-        
-    }
-    
-}
-
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullTask.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullTask.java	(revision 1173)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullTask.java	(revision 1217)
@@ -22,5 +22,5 @@
 /**
  * <p>
- * TODO comment
+ * Implementation of Null Object pattern {@link http://en.wikipedia.org/wiki/Null_Object_pattern}.
  * </p>
  * 
@@ -29,8 +29,9 @@
 public class NullTask implements ITask {
 
-    /**  */
     private static final long serialVersionUID = 1236779392413787860L;
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITask#getId()
      */
@@ -39,6 +40,8 @@
         return -1;
     }
-    
-    /* (non-Javadoc)
+
+    /*
+     * (non-Javadoc)
+     * 
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#getName()
      */
@@ -47,5 +50,7 @@
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#getDescription()
      */
@@ -54,12 +59,18 @@
     }
 
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#equals(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#equals(de.ugoe.cs.autoquest.tasktrees
+     * .treeifc.ITaskTreeNode)
      */
     public boolean equals(ITask task) {
         return false;
     }
-    
-    /* (non-Javadoc)
+
+    /*
+     * (non-Javadoc)
+     * 
      * @see java.lang.Object#clone()
      */
@@ -69,11 +80,14 @@
     }
 
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#accept(de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#accept(de.ugoe.cs.autoquest.tasktrees
+     * .treeifc.NodeVisitor)
      */
     public void accept(ITaskVisitor visitor) {
         // do nothing
     }
-    
+
 }
-
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/PatternsVisitorUtil.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/PatternsVisitorUtil.java	(revision 1173)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/PatternsVisitorUtil.java	(revision 1217)
@@ -15,16 +15,14 @@
 package de.ugoe.cs.autoquest.usability.util;
 
-import java.util.List;
+import java.util.Collection;
 
 import com.google.common.collect.Iterables;
 
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession;
-import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory;
+import de.ugoe.cs.autoquest.usability.rules.patterns.InteractionPatternVisitor;
 
 /**
  * <p>
- * TODO comment
+ * Util class for {@link InteractionPatternVisitor}.
  * </p>
  * 
@@ -36,26 +34,15 @@
         // no instantiation
     }
-    
+
     /**
      * <p>
-     * TODO: comment
+     * Gets the first sub task.
      * </p>
-     *
-     * @param taskTreeNode
-     * @return
+     * 
+     * @param tasks
+     *            collection of tasks
+     * @return first sub task
      */
-    public static ITaskModel createTaskModelFromUserSessions(List<IUserSession> userSessions) {
-        return new TaskFactory().createTaskModel(userSessions);
-    }
-    
-    /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
-     * @param taskTreeNodes
-     * @return
-     */
-    public static ITask firstNodeOf(List<ITask> tasks) {
+    public static ITask firstSubtaskOf(Collection<ITask> tasks) {
         return Iterables.getFirst(tasks, new NullTask());
     }
@@ -63,13 +50,14 @@
     /**
      * <p>
-     * TODO: comment
+     * Gets the last sub task.
      * </p>
-     *
-     * @param taskTreeNodes
-     * @return
+     * 
+     * @param tasks
+     *            collection of tasks
+     * @return last sub task
      */
-    public static ITask lastNodeOf(List<ITask> tasks) {
+    public static ITask lastSubTaskOf(Collection<ITask> tasks) {
         return Iterables.getLast(tasks, new NullTask());
     }
-    
+
 }
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/TextInputUtil.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/TextInputUtil.java	(revision 1173)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/TextInputUtil.java	(revision 1217)
@@ -31,5 +31,5 @@
 /**
  * <p>
- * TODO comment
+ * Util class to handle text input events/tasks.
  * </p>
  * 
@@ -42,4 +42,14 @@
     }
 
+    /**
+     * 
+     * <p>
+     * Returns all entered words and signs of text input events.
+     * </p>
+     * 
+     * @param tasksWithTextInputEvents
+     *            tasks with event type {@link TextInput}
+     * @return set of all entered word and signs with unique entries
+     */
     public static Multiset<String> aggregateEnteredTextFromTextInputs(List<ITask> tasksWithTextInputEvents)
     {
@@ -52,11 +62,20 @@
     }
 
+    /**
+     * 
+     * <p>
+     * Splits entered text into words and signs.
+     * </p>
+     * 
+     * @param enteredText
+     *            entered text (e.g. from text input event)
+     * @return collection of words and signs
+     */
     public static Iterable<String> splitTextIntoWordsAndSigns(String enteredText) {
         CharMatcher onlyWords =
-            CharMatcher.WHITESPACE.or(CharMatcher
-                .forPredicate(characterIsJavaIdentifierPartPredicate()));
+            CharMatcher.WHITESPACE.or(CharMatcher.forPredicate(characterIsNoJavaIdentifierPart()));
         CharMatcher onlySigns =
-            CharMatcher.WHITESPACE.or(CharMatcher
-                .forPredicate(characterIsJavaIdentifierPartPredicate()).negate());
+            CharMatcher.WHITESPACE.or(CharMatcher.forPredicate(characterIsNoJavaIdentifierPart())
+                .negate());
         Iterable<String> words =
             Splitter.on(onlyWords).omitEmptyStrings().trimResults().split(enteredText);
@@ -66,5 +85,13 @@
     }
 
-    public static Predicate<Character> characterIsJavaIdentifierPartPredicate() {
+    /**
+     * 
+     * <p>
+     * Determines, if a character is not part of a Java identifier.
+     * </p>
+     * 
+     * @return true, iff no part of Java identifier
+     */
+    public static Predicate<Character> characterIsNoJavaIdentifierPart() {
         return new Predicate<Character>() {
 
@@ -77,5 +104,13 @@
     }
 
-    public static Predicate<Character> characterIsLetterOrDigitPredicate() {
+    /**
+     * 
+     * <p>
+     * Determines if the specified character is not a letter or digit.
+     * </p>
+     * 
+     * @return
+     */
+    public static Predicate<Character> characterIsNoLetterOrDigitPredicate() {
         return new Predicate<Character>() {
 
