Index: trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java
===================================================================
--- trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java	(revision 1275)
+++ trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java	(revision 1294)
@@ -18,8 +18,6 @@
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Set;
 
 import org.eclipse.swt.SWT;
@@ -39,4 +37,6 @@
 
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptionalInstance;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelectionInstance;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
@@ -173,11 +173,32 @@
      * convenience method for creating the display of the instances
      */
-    private void buildInstanceTree(TreeItem currentParent, ITaskInstanceList taskInstanceList) {
+    private void buildInstanceTree(TreeItem currentParent, IUserSession session) {
         TreeItem child = new TreeItem(currentParent, SWT.NULL);
-        child.setText(taskInstanceList.toString());
-        child.setData(taskInstanceList);
-        
-        for (ITaskInstanceList childTask : taskInstanceList) {
-            buildInstanceTree(child, childTask);
+        child.setText(session.toString());
+        child.setData(session);
+        
+        for (ITaskInstance childInstance : session) {
+            buildInstanceTree(child, childInstance);
+        }
+    }
+
+    /**
+     * convenience method for creating the display of the instances
+     */
+    private void buildInstanceTree(TreeItem currentParent, ITaskInstance taskInstance) {
+        TreeItem child = new TreeItem(currentParent, SWT.NULL);
+        child.setText(taskInstance.toString());
+        child.setData(taskInstance);
+        
+        if (taskInstance instanceof ITaskInstanceList) {
+            for (ITaskInstance childInstance : (ITaskInstanceList) taskInstance) {
+                buildInstanceTree(child, childInstance);
+            }
+        }
+        else if (taskInstance instanceof ISelectionInstance) {
+            buildInstanceTree(child, ((ISelectionInstance) taskInstance).getChild());
+        }
+        else if (taskInstance instanceof IOptionalInstance) {
+            buildInstanceTree(child, ((IOptionalInstance) taskInstance).getChild());
         }
     }
@@ -229,23 +250,23 @@
 
     /**
-     * reduces the list of tasks in a model so that it only contains root nodes and that it is 
-     * sorted starting with the most complex task first 
+     * sort the list of tasks so that it contain those occurring most often first
      */
     private List<ITask> createSortedTaskList(Collection<ITask> tasks) {
-        Set<ITask> resultSet = new HashSet<ITask>(tasks);
+        /*Set<ITask> resultSet = new HashSet<ITask>(tasks);
         
         for (ITask task : tasks) {
             removeChildren(task, resultSet);
-        }
-        
-        List<ITask> result = new LinkedList<ITask>(resultSet);
+        }*/
+        
+        List<ITask> result = new LinkedList<ITask>(tasks);
         
         Collections.sort(result, new Comparator<ITask>() {
             @Override
             public int compare(ITask task1, ITask task2) {
-                return depth(task2) - depth(task1);
-            }
-
-            private int depth(ITask task) {
+                return taskModel.getTaskInfo(task2).getCount() -
+                    taskModel.getTaskInfo(task1).getCount();
+            }
+
+            /*private int depth(ITask task) {
                 int maxChildDepth = 0;
                 if (task instanceof IStructuringTemporalRelationship) {
@@ -259,5 +280,5 @@
                 }
                 return maxChildDepth + 1;
-            }
+            }*/
         });
         
@@ -268,5 +289,5 @@
      * convenience method for removed all non root tasks of the provided list
      */
-    private void removeChildren(ITask task, Set<ITask> result) {
+    /*private void removeChildren(ITask task, Set<ITask> result) {
         if (task instanceof IStructuringTemporalRelationship) {
             for (ITask child : ((IStructuringTemporalRelationship) task).getChildren()) {
@@ -277,5 +298,5 @@
             result.remove(((IMarkingTemporalRelationship) task).getMarkedTask());
         }
-    }
+    }*/
 
     /**
@@ -338,5 +359,5 @@
     private void createTreeItemFor(ITask task, TreeItem parent) {
         TreeItem item = new TreeItem(parent, SWT.NULL);
-        item.setText(task.toString());
+        item.setText(task.toString() + " (" + taskModel.getTaskInfo(task).getCount() + ")");
         item.setData(task);
         
