Index: /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/coverage/SequenceTools.java
===================================================================
--- /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/coverage/SequenceTools.java	(revision 327)
+++ /trunk/EventBenchCore/src/de/ugoe/cs/eventbench/coverage/SequenceTools.java	(revision 328)
@@ -1,4 +1,5 @@
 package de.ugoe.cs.eventbench.coverage;
 
+import java.security.InvalidParameterException;
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -40,14 +41,22 @@
 			Collection<List<? extends Event<?>>> sequences) {
 		Map<List<? extends Event<?>>, Double> subSeqWeights = new LinkedHashMap<List<? extends Event<?>>, Double>();
-		double sum = 0.0;
-		for (List<? extends Event<?>> sequence : sequences) {
-			double prob = process.getProbability(sequence);
-			subSeqWeights.put(sequence, prob);
-			sum += prob;
-		}
-		if (sum < 1.0) {
-			for (Map.Entry<List<? extends Event<?>>, Double> entry : subSeqWeights
-					.entrySet()) {
-				entry.setValue(entry.getValue() / sum);
+		if (sequences != null && !sequences.isEmpty()) {
+			if (process != null) {
+				double sum = 0.0;
+				for (List<? extends Event<?>> sequence : sequences) {
+					double prob = process.getProbability(sequence);
+					subSeqWeights.put(sequence, prob);
+					sum += prob;
+				}
+				if (sum < 1.0) {
+					for (Map.Entry<List<? extends Event<?>>, Double> entry : subSeqWeights
+							.entrySet()) {
+						entry.setValue(entry.getValue() / sum);
+					}
+				}
+			} else {
+				for( List<? extends Event<?>> sequence : sequences ) {
+					subSeqWeights.put(sequence, 0.0d);
+				}
 			}
 		}
@@ -67,7 +76,17 @@
 	 *            lenght of the sequences
 	 * @return numStates^length
+	 * @throws InvalidParameterException
+	 *             thrown if length less or equal to 0
 	 */
 	public static long numSequences(IStochasticProcess process, int length) {
-		return (long) Math.pow(process.getNumSymbols(), length);
+		if (length <= 0) {
+			throw new InvalidParameterException(
+					"length must be a positive integer");
+		}
+		long result = 0;
+		if (process != null) {
+			result = (long) Math.pow(process.getNumSymbols(), length);
+		}
+		return result;
 	}
 
@@ -83,23 +102,32 @@
 	 *            length of the subsequences
 	 * @return {@link Set} of all subsequences
+	 * @throws InvalidParameterException
+	 *             thrown if length less or equal to 0
 	 */
 	public static Set<List<? extends Event<?>>> containedSubSequences(
 			Collection<List<? extends Event<?>>> sequences, int length) {
+		if (length <= 0) {
+			throw new InvalidParameterException(
+					"length must be a positive integer");
+		}
 		Set<List<? extends Event<?>>> containedSubSeqs = new LinkedHashSet<List<? extends Event<?>>>();
-		for (List<? extends Event<?>> sequence : sequences) {
-			List<Event<?>> subSeq = new LinkedList<Event<?>>();
-			boolean minLengthReached = false;
-			for (Event<?> event : sequence) {
-				subSeq.add(event);
-				if (!minLengthReached) {
-					if (subSeq.size() == length) {
-						minLengthReached = true;
+		if (sequences != null) {
+			for (List<? extends Event<?>> sequence : sequences) {
+				List<Event<?>> subSeq = new LinkedList<Event<?>>();
+				boolean minLengthReached = false;
+				for (Event<?> event : sequence) {
+					subSeq.add(event);
+					if (!minLengthReached) {
+						if (subSeq.size() == length) {
+							minLengthReached = true;
+						}
+					} else {
+						subSeq.remove(0);
 					}
-				} else {
-					subSeq.remove(0);
-				}
-				if (minLengthReached) {
-					if (!containedSubSeqs.contains(subSeq)) {
-						containedSubSeqs.add(new LinkedList<Event<?>>(subSeq));
+					if (minLengthReached) {
+						if (!containedSubSeqs.contains(subSeq)) {
+							containedSubSeqs.add(new LinkedList<Event<?>>(
+									subSeq));
+						}
 					}
 				}
