Index: /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/Trie.java
===================================================================
--- /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/Trie.java	(revision 29)
+++ /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/Trie.java	(revision 30)
@@ -6,8 +6,10 @@
 import java.util.Set;
 
+import de.ugoe.cs.util.StringTools;
+
 import edu.uci.ics.jung.graph.DelegateTree;
 import edu.uci.ics.jung.graph.Tree;
 
-public class Trie<T> {
+public class Trie<T> implements IDotCompatible {
 	
 	private Set<T> knownSymbols;
@@ -148,4 +150,12 @@
 	}
 	
+	public String getDotRepresentation() {
+		StringBuilder stringBuilder = new StringBuilder();
+		stringBuilder.append("digraph model {" + StringTools.ENDLINE);
+		rootNode.appendDotRepresentation(stringBuilder);
+		stringBuilder.append('}' + StringTools.ENDLINE);
+		return stringBuilder.toString();
+	}
+	
 	@Override
 	public String toString() {
Index: /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java
===================================================================
--- /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java	(revision 29)
+++ /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java	(revision 30)
@@ -73,4 +73,8 @@
 	}
 	
+	public String getTrieDotRepresentation() {
+		return trie.getDotRepresentation();
+	}
+	
 	public Tree<TrieVertex, Edge> getTrieGraph() {
 		return trie.getGraph();
Index: /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieNode.java
===================================================================
--- /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieNode.java	(revision 29)
+++ /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieNode.java	(revision 30)
@@ -26,5 +26,5 @@
 	public TrieNode(T symbol) {
 		if( symbol==null ) {
-			throw new InvalidParameterException("symbol must not be null.");
+			throw new InvalidParameterException("symbol must not be null. null is reserved for root node!");
 		}
 		this.symbol = symbol;
@@ -120,4 +120,19 @@
 		}		
 	}
-
+	
+	void appendDotRepresentation(StringBuilder stringBuilder) {
+		String thisSaneId;
+		if( symbol==null ) {
+			thisSaneId = "root";
+		} else {
+			thisSaneId = symbol.toString().replace("\"", "\\\"").replaceAll("[\r\n]","")+"#"+count;
+		}
+		stringBuilder.append(" " + hashCode() + " [label=\""+thisSaneId+"\"];" + StringTools.ENDLINE);
+		for( TrieNode<T> childNode : children ) {
+			stringBuilder.append(" "+hashCode()+" -> " + childNode.hashCode() + ";" + StringTools.ENDLINE);
+		}
+		for( TrieNode<T> childNode : children ) {
+			childNode.appendDotRepresentation(stringBuilder);
+		}
+	}
 }
