Some test for negated tokens
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java
index 5d5c4dc..7f6f394 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java
@@ -18,6 +18,7 @@
     private List<SpanQuery> alternatives;
     private boolean isNull = true;
     private boolean isOptional = false;
+    private boolean isNegative = false;
 
     public SpanAlterQueryWrapper (String field) {
 	this.field = field;
@@ -53,6 +54,9 @@
 	if (term.isNull())
 	    return this;
 
+	if (term.isNegative())
+	    this.isNegative = true;
+
 	// If one operand is optional, the whole group can be optional
 	// a | b* | c
 	if (term.isOptional())
@@ -98,4 +102,8 @@
     public boolean isNull () {
 	return this.isNull;
     };
+
+    public boolean isNegative () {
+	return this.isNegative;
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
index 50671f6..bb43edc 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
@@ -49,4 +49,8 @@
     public boolean isNull () {
 	return this.subquery.isNull();
     };
+
+    public boolean isNegative () {
+	return this.subquery.isNegative();
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java
index c5da7fc..4add693 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java
@@ -25,4 +25,8 @@
     public boolean isNull () {
 	return false;
     };
+
+    public boolean isNegative () {
+	return false;
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
index 4476f76..252ee0a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
@@ -45,4 +45,8 @@
     public boolean isNull () {
 	return this.subquery.isNull();
     };
+
+    public boolean isNegative () {
+	return this.subquery.isNegative();
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java
index 4a29118..f6d3718 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java
@@ -29,6 +29,10 @@
 	return false;
     };
 
+    public boolean isNegative () {
+	return false;
+    };
+
 
     /*
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java
index b88af57..eeaa04c 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java
@@ -9,4 +9,5 @@
     public SpanQuery toQuery ();
     public boolean isOptional ();
     public boolean isNull ();
+    public boolean isNegative ();
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java
index cf788dc..8be32cc 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java
@@ -50,4 +50,8 @@
     public boolean isNull () {
 	return false;
     };
+
+    public boolean isNegative () {
+	return false;
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java
index d4b8c54..3ad592d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java
@@ -59,4 +59,8 @@
     public boolean isNull () {
 	return this.isNull;
     };
+
+    public boolean isNegative () {
+	return this.subquery.isNegative();
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
index 1d007c3..91dbcc4 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
@@ -26,6 +26,7 @@
     public ArrayList<SpanQuery> exclusive;
     private String field;
     private boolean isNull = true;
+    private boolean isNegative = false;
 
     /**
      * Constructor.
@@ -61,6 +62,8 @@
     public SpanSegmentQueryWrapper (String field, SpanAlterQueryWrapper alter) {
 	this(field);
 	if (!alter.isNull()) {
+	    if (alter.isNegative())
+		this.isNegative = true;
 	    this.inclusive.add((SpanQuery) alter.toQuery());
 	    this.isNull = false;
 	};
@@ -103,6 +106,8 @@
 
     public SpanSegmentQueryWrapper with (SpanAlterQueryWrapper alter) {
 	if (!alter.isNull()) {
+	    if (alter.isNegative())
+		this.isNegative = true;
 	    this.inclusive.add((SpanQuery) alter.toQuery());
 	    this.isNull = false;
 	};
@@ -143,7 +148,12 @@
 
     public SpanSegmentQueryWrapper without (SpanAlterQueryWrapper alter) {
 	if (!alter.isNull()) {
-	    this.exclusive.add((SpanQuery) alter.toQuery());
+	    if (alter.isNegative()) {
+		this.inclusive.add((SpanQuery) alter.toQuery());
+	    }
+	    else {
+		this.exclusive.add((SpanQuery) alter.toQuery());
+	    };
 	    this.isNull = false;
 	};
 	return this;
@@ -152,6 +162,7 @@
     // Identical to with
     public SpanSegmentQueryWrapper without (SpanSegmentQueryWrapper seg) {
 	if (!seg.isNull()) {
+	    // TODO!!!
 	    this.with(seg);
 	    this.isNull = false;
 	};
@@ -222,5 +233,12 @@
     public boolean isNull () {
 	return this.isNull;
     };
+
+    public boolean isNegative () {
+	if (this.inclusive.size() == 0 && this.exclusive.size() >= 1) {
+	    return true;
+	};
+	return false;
+    };
 };
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
index 9b695d8..b316fdf 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
@@ -20,6 +20,11 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/*
+TODO: Make isNegative work!
+*/
+
+
 /**
  * @author Nils Diewald
  */
@@ -39,7 +44,8 @@
 	isNull = true,
 	isOptional = true,
 	lastIsOptional = false,
-	firstIsOptional = false;
+	firstIsOptional = false,
+	isNegative = false;
 
     public SpanSequenceQueryWrapper (String field) {
 	this.field = field;
@@ -66,7 +72,12 @@
 
     public SpanSequenceQueryWrapper (String field, SpanQueryWrapperInterface sswq) {
 	this(field);
+
 	if (!sswq.isNull()) {
+
+	    if (sswq.isNegative())
+		this.isNegative = true;
+	    
 	    this.segments.add((SpanQuery) sswq.toQuery());
 	    this.isNull = false;
 	    if (sswq.isOptional()) {
@@ -155,6 +166,10 @@
 
     public SpanSequenceQueryWrapper append (SpanQueryWrapperInterface ssq) {
 	if (!ssq.isNull()) {
+
+	    if (ssq.isNegative())
+		this.isNegative = true;
+	    
 	    SpanQuery appendQuery = ssq.toQuery();
 	    if (!ssq.isOptional()) {
 		if (DEBUG)
@@ -252,6 +267,10 @@
 
     public SpanSequenceQueryWrapper prepend (SpanQueryWrapperInterface ssq) {
 	if (!ssq.isNull()) {
+
+	    if (ssq.isNegative())
+		this.isNegative = true;
+	    
 	    SpanQuery prependQuery = ssq.toQuery();
 	    if (!ssq.isOptional()) {
 		return this.prepend(prependQuery);
@@ -425,4 +444,8 @@
     public boolean isNull () {
 	return this.isNull;
     };
+
+    public boolean isNegative () {
+	return this.isNegative;
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java
index 94179f3..38d60ce 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java
@@ -36,4 +36,8 @@
     public boolean isNull () {
 	return false;
     };
+
+    public boolean isNegative () {
+	return false;
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java
index 68b07fd..47face4 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java
@@ -55,4 +55,11 @@
     public boolean isNull () {
 	return this.isNull;
     };
+
+    public boolean isNegative () {
+	if (this.element.isNegative() || this.wrap.isNegative()) {
+	    return true;
+	};
+	return false;
+    };
 };