Cleanup for version 0.2

Change-Id: I383ed12da8abc96b233c0694612f837b49731201
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
index fc1b74d..114fc2c 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
@@ -1,4 +1,5 @@
 package de.ids_mannheim.korap.query.serialize;
+
 import static org.junit.Assert.*;
 
 import java.io.IOException;
@@ -14,7 +15,8 @@
 import de.ids_mannheim.korap.query.serialize.util.StatusCodes;
 
 /**
- * Tests for JSON-LD serialization of ANNIS QL queries. 
+ * Tests for JSON-LD serialization of ANNIS QL queries.
+ * 
  * @author Joachim Bingel (bingel@ids-mannheim.de)
  * @version 1.0
  */
@@ -27,8 +29,9 @@
     ObjectMapper mapper = new ObjectMapper();
     JsonNode res;
 
+
     @Test
-    public void testContext() throws JsonProcessingException, IOException {
+    public void testContext () throws JsonProcessingException, IOException {
         String contextUrl = "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld";
         query = "foo";
         qs.setQuery(query, "annis");
@@ -36,302 +39,379 @@
         assertEquals(contextUrl, res.get("@context").asText());
     }
 
+
     @Test
-    public void testSingleTokens() throws JsonProcessingException, IOException {
+    public void testSingleTokens () throws JsonProcessingException, IOException {
         query = "\"Mann\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			 res.at("/query/@type").asText());
-        assertEquals("koral:term",			 res.at("/query/wrap/@type").asText());
-        assertEquals("orth",				 res.at("/query/wrap/layer").asText());
-        assertEquals("Mann",				 res.at("/query/wrap/key").asText());
-        assertEquals("match:eq",			 res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("Mann", res.at("/query/wrap/key").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "tok!=\"Frau\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			 res.at("/query/@type").asText());
-        assertEquals("koral:term",			 res.at("/query/wrap/@type").asText());
-        assertEquals("orth",				 res.at("/query/wrap/layer").asText());
-        assertEquals("Frau",				 res.at("/query/wrap/key").asText());
-        assertEquals("match:ne",			 res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("Frau", res.at("/query/wrap/key").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
 
         query = "tok";  // special keyword for token
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			 res.at("/query/@type").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
 
         query = "Mann"; // no special keyword -> defaults to layer name
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",			 res.at("/query/@type").asText());
-        assertEquals("Mann",				 res.at("/query/layer").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("Mann", res.at("/query/layer").asText());
     }
 
-    @Test 
-    public void testSpans() throws JsonProcessingException, IOException {
+
+    @Test
+    public void testSpans () throws JsonProcessingException, IOException {
         query = "node"; // special keyword for general span
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",			 res.at("/query/@type").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
 
         query = "cat=\"np\"";  // cat is special keyword for spans
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",			 res.at("/query/@type").asText());
-        assertEquals("np",					 res.at("/query/key").asText());
-        assertEquals("c",					 res.at("/query/layer").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("np", res.at("/query/key").asText());
+        assertEquals("c", res.at("/query/layer").asText());
 
-        query = "cat=\"NP\"";  
+        query = "cat=\"NP\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",			 res.at("/query/@type").asText());
-        assertEquals("NP",					 res.at("/query/key").asText());
-        assertEquals("c",					 res.at("/query/layer").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("NP", res.at("/query/key").asText());
+        assertEquals("c", res.at("/query/layer").asText());
     }
 
-    @Test
-    public void testRegex() throws JsonProcessingException, IOException {
-        query = "/Mann/";  
-        qs.setQuery(query, "annis");
-        res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			 res.at("/query/@type").asText());
-        assertEquals("koral:term",			 res.at("/query/wrap/@type").asText());
-        assertEquals("type:regex",			 res.at("/query/wrap/type").asText());
-        assertEquals("orth",				 res.at("/query/wrap/layer").asText());
-        assertEquals("Mann",				 res.at("/query/wrap/key").asText());
-        assertEquals("match:eq",			 res.at("/query/wrap/match").asText());
 
-        query = "/.*?Mann.*?/";  
+    @Test
+    public void testRegex () throws JsonProcessingException, IOException {
+        query = "/Mann/";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("type:regex",			res.at("/query/wrap/type").asText());
-        assertEquals(".*?Mann.*?",			res.at("/query/wrap/key").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("Mann", res.at("/query/wrap/key").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
+
+        query = "/.*?Mann.*?/";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals(".*?Mann.*?", res.at("/query/wrap/key").asText());
     }
 
+
     @Test
-    public void testFoundriesLayers() throws JsonProcessingException, IOException {
-        query = "c=\"np\"";  
+    public void testFoundriesLayers () throws JsonProcessingException,
+            IOException {
+        query = "c=\"np\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",			 res.at("/query/@type").asText());
-        assertEquals("np",					 res.at("/query/key").asText());
-        assertEquals("c",					 res.at("/query/layer").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("np", res.at("/query/key").asText());
+        assertEquals("c", res.at("/query/layer").asText());
 
-        query = "cnx/c=\"np\"";  
+        query = "cnx/c=\"np\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",			 res.at("/query/@type").asText());
-        assertEquals("np",					 res.at("/query/key").asText());
-        assertEquals("c",					 res.at("/query/layer").asText());
-        assertEquals("cnx",					 res.at("/query/foundry").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("np", res.at("/query/key").asText());
+        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("cnx", res.at("/query/foundry").asText());
 
-        query = "tt/pos=\"np\"";  
+        query = "tt/pos=\"np\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			 res.at("/query/@type").asText());
-        assertEquals("koral:term",			 res.at("/query/wrap/@type").asText());
-        assertEquals("np",					 res.at("/query/wrap/key").asText());
-        assertEquals("p",					 res.at("/query/wrap/layer").asText());
-        assertEquals("tt",					 res.at("/query/wrap/foundry").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("np", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("tt", res.at("/query/wrap/foundry").asText());
     }
 
+
     @Test
-    public void testDirectDeclarationRelations() throws JsonProcessingException, IOException {
-        query = "node > node";  
+    public void testDirectDeclarationRelations ()
+            throws JsonProcessingException, IOException {
+        query = "node > node";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
 
-        query = "node > cnx/c=\"np\"";  
+        query = "node > cnx/c=\"np\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("np",					res.at("/query/operands/1/key").asText());
-        assertEquals("c",					res.at("/query/operands/1/layer").asText());
-        assertEquals("cnx",					res.at("/query/operands/1/foundry").asText());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("np", res.at("/query/operands/1/key").asText());
+        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/1/foundry").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
 
-        query = "cnx/c=\"np\" > node";  
+        query = "cnx/c=\"np\" > node";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(true,					res.at("/query/operands/1/key").isMissingNode());
-        assertEquals("np",					res.at("/query/operands/0/key").asText());
+        assertEquals(true, res.at("/query/operands/1/key").isMissingNode());
+        assertEquals("np", res.at("/query/operands/0/key").asText());
 
         query = "cat=/NP/ & cat=/PP/ > #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("PP",					res.at("/query/operands/0/key").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("NP",					res.at("/query/operands/1/key").asText());
-        assertEquals(true,					res.at("/query/operands/2").isMissingNode());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("PP", res.at("/query/operands/0/key").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("NP", res.at("/query/operands/1/key").asText());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
     }
 
+
     @Test
-    public void testDefPredicationInversion() throws JsonProcessingException, IOException {
-        query = "#1 > #2 & cnx/cat=\"vp\" & cnx/cat=\"np\"";  
+    public void testDefPredicationInversion () throws JsonProcessingException,
+            IOException {
+        query = "#1 > #2 & cnx/cat=\"vp\" & cnx/cat=\"np\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("vp",					res.at("/query/operands/0/key").asText());
-        assertEquals("c",					res.at("/query/operands/0/layer").asText());
-        assertEquals("cnx",					res.at("/query/operands/0/foundry").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("np",					res.at("/query/operands/1/key").asText());
-        assertEquals("c",					res.at("/query/operands/1/layer").asText());
-        assertEquals("cnx",					res.at("/query/operands/1/foundry").asText());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("vp", res.at("/query/operands/0/key").asText());
+        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/0/foundry").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("np", res.at("/query/operands/1/key").asText());
+        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/1/foundry").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
     }
 
-    @Test
-    public void testSimpleDominance() throws JsonProcessingException, IOException {
-        query = "node & node & #2 > #1";  
-        qs.setQuery(query, "annis");
-        res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
 
-        query = "\"Mann\" & node & #2 > #1";  
+    @Test
+    public void testSimpleDominance () throws JsonProcessingException,
+            IOException {
+        query = "node & node & #2 > #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:token",			res.at("/query/operands/1/@type").asText());
-        assertEquals("Mann",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
+
+        query = "\"Mann\" & node & #2 > #1";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
 
         query = "\"Mann\" & node & #2 >[func=\"SB\"] #1";  //coordinates the func=SB term and requires a "c"-layer term (consituency relation/dominance)
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:termGroup",		res.at("/query/relation/wrap/@type").asText());
-        assertEquals("relation:and",		res.at("/query/relation/wrap/relation").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/operands/1/layer").asText());
-        assertEquals("func",				res.at("/query/relation/wrap/operands/0/layer").asText());
-        assertEquals("SB",					res.at("/query/relation/wrap/operands/0/key").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:termGroup", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("relation:and", res.at("/query/relation/wrap/relation")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/operands/1/layer")
+                .asText());
+        assertEquals("func", res.at("/query/relation/wrap/operands/0/layer")
+                .asText());
+        assertEquals("SB", res.at("/query/relation/wrap/operands/0/key")
+                .asText());
 
         query = "cat=\"S\" & node & #1 >[func=\"SB\" func=\"MO\"] #2";  // quite meaningless (function is subject and modifier), but this is allowed by Annis, however its backend only regards the 1st option
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals("koral:termGroup",		res.at("/query/relation/wrap/@type").asText());
-        assertEquals("relation:and",		res.at("/query/relation/wrap/relation").asText());
-        assertEquals("func",				res.at("/query/relation/wrap/operands/0/layer").asText());
-        assertEquals("SB",					res.at("/query/relation/wrap/operands/0/key").asText());
-        assertEquals("func",				res.at("/query/relation/wrap/operands/1/layer").asText());
-        assertEquals("MO"	,				res.at("/query/relation/wrap/operands/1/key").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/operands/2/layer").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("koral:termGroup", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("relation:and", res.at("/query/relation/wrap/relation")
+                .asText());
+        assertEquals("func", res.at("/query/relation/wrap/operands/0/layer")
+                .asText());
+        assertEquals("SB", res.at("/query/relation/wrap/operands/0/key")
+                .asText());
+        assertEquals("func", res.at("/query/relation/wrap/operands/1/layer")
+                .asText());
+        assertEquals("MO", res.at("/query/relation/wrap/operands/1/key")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/operands/2/layer")
+                .asText());
 
         query = "cat=\"S\" & cat=\"NP\" & #1 >@l #2";  // all sentences starting with NP  -> wrap relation in startswith and retrieve 2nd operand with focus
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:position",	res.at("/query/operation").asText());
-        assertEquals("operation:relation",	res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:startsWith",	res.at("/query/frames/0").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("S",					res.at("/query/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(130,				    res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:span",			res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("NP",					res.at("/query/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("koral:reference",		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operands/1/operation").asText());
-        assertEquals(130,				    res.at("/query/operands/1/classRef/0").asInt());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("operation:relation", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:startsWith", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/operands/0/@type")
+                .asText());
+        assertEquals("S", res.at("/query/operands/0/operands/0/key").asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(130, res.at("/query/operands/0/operands/1/classOut")
+                .asInt());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("NP", res
+                .at("/query/operands/0/operands/1/operands/0/key").asText());
+        assertEquals("koral:reference", res.at("/query/operands/1/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(130, res.at("/query/operands/1/classRef/0").asInt());
 
-        query = "cat=\"S\" & cat=\"NP\" & #1 >@r #2";  
+        query = "cat=\"S\" & cat=\"NP\" & #1 >@r #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:position",	res.at("/query/operation").asText());
-        assertEquals("operation:relation",	res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:endsWith",		res.at("/query/frames/0").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("S",					res.at("/query/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(130,					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:span",			res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("NP",					res.at("/query/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("koral:reference",		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operands/1/operation").asText());
-        assertEquals(130,					res.at("/query/operands/1/classRef/0").asInt());
-    }
-
-    @Test
-    public void testIndirectDominance() throws JsonProcessingException, IOException {
-        query = "node & node & #1 >2,4 #2";  
-        qs.setQuery(query, "annis");
-        res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:relation",		res.at("/query/relation/@type").asText());
-        assertEquals(2,						res.at("/query/relation/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/relation/boundary/max").asInt());
-        assertEquals("koral:term",			res.at("/query/relation/wrap/@type").asText());
-        assertEquals("c",					res.at("/query/relation/wrap/layer").asText());
-
-        query = "node & node & #1 >* #2";  
-        qs.setQuery(query, "annis");
-        res = mapper.readTree(qs.toJSON());
-        assertEquals(0,						res.at("/query/relation/boundary/min").asInt());
-        assertEquals(true,					res.at("/query/relation/boundary/max").isMissingNode());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("operation:relation", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:endsWith", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/operands/0/@type")
+                .asText());
+        assertEquals("S", res.at("/query/operands/0/operands/0/key").asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(130, res.at("/query/operands/0/operands/1/classOut")
+                .asInt());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("NP", res
+                .at("/query/operands/0/operands/1/operands/0/key").asText());
+        assertEquals("koral:reference", res.at("/query/operands/1/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(130, res.at("/query/operands/1/classRef/0").asInt());
     }
 
 
     @Test
-    public void testMultipleDominance() throws JsonProcessingException, IOException {
-        query = "cat=\"CP\" & cat=\"VP\" & cat=\"NP\" & #1 > #2 > #3";  
+    public void testIndirectDominance () throws JsonProcessingException,
+            IOException {
+        query = "node & node & #1 >2,4 #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operation").asText());
-        assertEquals("koral:reference",		res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operands/0/operation").asText());
-        assertEquals(129,   			    res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",	res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:relation",		res.at("/query/operands/0/operands/0/relation/@type").asText());
-        assertEquals("c",					res.at("/query/operands/0/operands/0/relation/wrap/layer").asText());
-        assertEquals("koral:span",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("c",					res.at("/query/operands/0/operands/0/operands/0/layer").asText());
-        assertEquals("CP",					res.at("/query/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,   			    res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("VP",					res.at("/query/operands/0/operands/0/operands/1/operands/0/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals(2, res.at("/query/relation/boundary/min").asInt());
+        assertEquals(4, res.at("/query/relation/boundary/max").asInt());
+        assertEquals("koral:term", res.at("/query/relation/wrap/@type")
+                .asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
+
+        query = "node & node & #1 >* #2";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals(0, res.at("/query/relation/boundary/min").asInt());
+        assertEquals(true, res.at("/query/relation/boundary/max")
+                .isMissingNode());
     }
+
+
+    @Test
+    public void testMultipleDominance () throws JsonProcessingException,
+            IOException {
+        query = "cat=\"CP\" & cat=\"VP\" & cat=\"NP\" & #1 > #2 > #3";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:relation",
+                res.at("/query/operands/0/operands/0/relation/@type").asText());
+        assertEquals("c",
+                res.at("/query/operands/0/operands/0/relation/wrap/layer")
+                        .asText());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("c",
+                res.at("/query/operands/0/operands/0/operands/0/layer")
+                        .asText());
+        assertEquals("CP", res
+                .at("/query/operands/0/operands/0/operands/0/key").asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "VP",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+    }
+
+
     //		query = "cat=\"CP\" & cat=\"VP\" & cat=\"NP\" & #1 > #2 > #3";
     //		String dom1 = 
     //				"{@type=koral:group, operation=operation:relation, operands=[" +
@@ -402,100 +482,114 @@
     //	}
 
     @Test
-    public void testSequence() throws Exception {
+    public void testSequence () throws Exception {
         query = "tok=\"der\" & tok=\"die\" & #1 . #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("der",                 res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("die",                 res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(true,                  res.at("/query/inOrder").asBoolean());
-        assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("die", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
 
         query = "tok=\"der\" & tok=\"die\" & #1 .2,3 #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("der",                 res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("die",                 res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(true,                  res.at("/query/inOrder").asBoolean());
-        assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
-        assertEquals("koral:distance",      res.at("/query/distances/0/@type").asText());
-        assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(1,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(2,                     res.at("/query/distances/0/boundary/max").asInt());
-        
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("die", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("koral:boundary",
+                res.at("/query/distances/0/boundary/@type").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(2, res.at("/query/distances/0/boundary/max").asInt());
+
         query = "tok=\"der\" & tok=\"die\" & #1 .2 #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("der",                 res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("die",                 res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(true,                  res.at("/query/inOrder").asBoolean());
-        assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
-        assertEquals("koral:distance",      res.at("/query/distances/0/@type").asText());
-        assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(1,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(true,                  res.at("/query/distances/0/boundary/max").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("die", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("koral:boundary",
+                res.at("/query/distances/0/boundary/@type").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(true, res.at("/query/distances/0/boundary/max")
+                .isMissingNode());
 
         query = "tok=\"der\" & tok=\"die\" & #1 .* #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(0,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(true,                  res.at("/query/distances/0/boundary/max").isMissingNode());
+        assertEquals("koral:boundary",
+                res.at("/query/distances/0/boundary/@type").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(true, res.at("/query/distances/0/boundary/max")
+                .isMissingNode());
     }
 
+
     @Test
-    public void testNear() throws Exception {
+    public void testNear () throws Exception {
         query = "tok=\"der\" & tok=\"die\" & #1 ^ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("der",                 res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("die",                 res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(false,                 res.at("/query/inOrder").asBoolean());
-        assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("die", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(false, res.at("/query/inOrder").asBoolean());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
 
         query = "tok=\"der\" & tok=\"die\" & #1 ^2,3 #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("der",                 res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("die",                 res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(false,                 res.at("/query/inOrder").asBoolean());
-        assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
-        assertEquals("koral:distance",      res.at("/query/distances/0/@type").asText());
-        assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(1,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(2,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("die", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(false, res.at("/query/inOrder").asBoolean());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("koral:boundary",
+                res.at("/query/distances/0/boundary/@type").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(2, res.at("/query/distances/0/boundary/max").asInt());
 
         query = "tok=\"der\" & tok=\"die\" & #1 ^* #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(0,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(true,                  res.at("/query/distances/0/boundary/max").isMissingNode());
-        assertEquals(false,                 res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:boundary",
+                res.at("/query/distances/0/boundary/@type").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(true, res.at("/query/distances/0/boundary/max")
+                .isMissingNode());
+        assertEquals(false, res.at("/query/inOrder").asBoolean());
     }
 
 
     @Test
-    public void testMultipleSequence() throws Exception {
+    public void testMultipleSequence () throws Exception {
         query = "tok=\"a\" & tok=\"b\" & tok=\"c\" & #1 . #2 & #2 . #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals(129,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals(res.at("/query/operands/0/classRef/0").asInt(), 
-                res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals(res.at("/query/operands/0/classRef/0").asInt(),
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
     }
 
 
@@ -550,442 +644,731 @@
     //	}
     //	
     /**
-     * Tests the (rather difficult) serialization of queries where two subsequent relations
-     * do not share any common operand. Makes it impossible to wrap 2nd relation around 1st. 
-     * Must therefore re-order relations (or postpone processing of 2nd).
+     * Tests the (rather difficult) serialization of queries where two
+     * subsequent relations
+     * do not share any common operand. Makes it impossible to wrap
+     * 2nd relation around 1st.
+     * Must therefore re-order relations (or postpone processing of
+     * 2nd).
+     * 
      * @throws JsonProcessingException
      * @throws IOException
      */
     @Test
-    public void testNoSharedOperand() throws JsonProcessingException, IOException {
-        query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & #1 . #2 & #3 . #4 & #1 > #3";  
+    public void testNoSharedOperand () throws JsonProcessingException,
+            IOException {
+        query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & #1 . #2 & #3 . #4 & #1 > #3";
         // the resulting query should be equivalent to PQ+:  focus(2:dominates(focus(1:{1:<A>}<B>),{2:<C>}))<D> 
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("A",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("B",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key").asText());
-        assertEquals("C",                   res.at("/query/operands/0/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("D",                   res.at("/query/operands/1/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "A",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals(
+                "B",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                        .asText());
+        assertEquals(
+                "C",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+        assertEquals("D", res.at("/query/operands/1/key").asText());
 
-        query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & cat=\"E\" & cat=\"F\" & #1 . #2 & #3 . #4 & #5 . #6 & #1 > #3 & #3 > #5";  
+        query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & cat=\"E\" & cat=\"F\" & #1 . #2 & #3 . #4 & #5 . #6 & #1 > #3 & #3 > #5";
         // the resulting query should be equivalent to PQ+:   focus(3:dominates(focus(2:dominates(focus(1:{1:<A>}<B>),{2:<C>}))<D>,{3:<E>}))<F> 
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("A",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("B",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/key").asText());
-        assertEquals("C",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("D",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key").asText());
-        assertEquals("E",                   res.at("/query/operands/0/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("F",                   res.at("/query/operands/1/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "A",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals(
+                "B",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                        .asText());
+        assertEquals(
+                "C",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+        assertEquals(
+                "D",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                        .asText());
+        assertEquals(
+                "E",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+        assertEquals("F", res.at("/query/operands/1/key").asText());
 
-        query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & #1 . #2 & #3 . #4";  
+        query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & #1 . #2 & #3 . #4";
         // the resulting query should be equivalent to PQ+:  focus(2:dominates(focus(1:{1:<A>}<B>),{2:<C>}))<D> 
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(true,         res.at("/query/@type").isMissingNode());
-        assertEquals(StatusCodes.UNBOUND_ANNIS_RELATION,   res.at("/errors/0/0").asInt());
+        assertEquals(true, res.at("/query/@type").isMissingNode());
+        assertEquals(StatusCodes.UNBOUND_ANNIS_RELATION, res.at("/errors/0/0")
+                .asInt());
     }
 
+
     @Test
-    public void testMultipleMixedOperators() throws Exception {
+    public void testMultipleMixedOperators () throws Exception {
         query = "tok=\"Sonne\" & tok=\"Mond\" & tok=\"Sterne\" & #1 > #2 .1,4 #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:token",         res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("Sonne",               res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("Mond",                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("Sterne",              res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("w",                   res.at("/query/distances/0/key").asText());
-        assertEquals(0,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(3,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("Sonne",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "Mond",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("Sterne", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(3, res.at("/query/distances/0/boundary/max").asInt());
 
         query = "tok=\"Sonne\" & tok=\"Mond\" & #1 > #2 .1,4  tok=\"Sterne\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:token",         res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("Sonne",               res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("Mond",                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("Sterne",              res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("w",                   res.at("/query/distances/0/key").asText());
-        assertEquals(0,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(3,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("Sonne",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "Mond",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("Sterne", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(3, res.at("/query/distances/0/boundary/max").asInt());
 
         query = "cat=\"NP\" & cat=\"VP\" & cat=\"PP\" & #1 $ #2 > #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(130,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("koral:span",          res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("NP",                  res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(130,                   res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("VP",                  res.at("/query/operands/0/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("PP",                  res.at("/query/operands/1/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(130, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classRef/0")
+                        .asInt());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "operation:relation",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                129,
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "NP",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "VP",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+        assertEquals("PP", res.at("/query/operands/1/key").asText());
 
     }
+
+
     @Test
-    public void testMultipleOperatorsWithSameOperands() throws Exception {
+    public void testMultipleOperatorsWithSameOperands () throws Exception {
         query = "cat=\"NP\" > cat=\"VP\" & #1 _l_ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:position",  res.at("/query/operation").asText());
-        assertEquals("frames:startsWith",   res.at("/query/frames/0").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("koral:span",          res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("NP",                  res.at("/query/operands/0/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(130,                   res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("VP",                  res.at("/query/operands/0/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/1/operation").asText());
-        assertEquals(130,                   res.at("/query/operands/1/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:startsWith", res.at("/query/frames/0").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "NP",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "VP",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+        assertEquals("koral:reference", res.at("/query/operands/1/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(130, res.at("/query/operands/1/classRef/0").asInt());
 
     }
+
+
     @Test
-    public void testPositions() throws Exception {
+    public void testPositions () throws Exception {
         query = "node & node & #1 _=_ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:position",  res.at("/query/operation").asText());
-        assertEquals("frames:matches",      res.at("/query/frames/0").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:matches", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
 
         query = "node & node & #1 _i_ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:isAround",     res.at("/query/frames/0").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
+        assertEquals("frames:isAround", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
 
         query = "node & node & #1 _l_ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:startsWith",   res.at("/query/frames/0").asText());
-        assertEquals("frames:matches",      res.at("/query/frames/1").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
+        assertEquals("frames:startsWith", res.at("/query/frames/0").asText());
+        assertEquals("frames:matches", res.at("/query/frames/1").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
 
         query = "node & node & #1 _r_ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:endsWith",     res.at("/query/frames/0").asText());
-        assertEquals("frames:matches",      res.at("/query/frames/1").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
+        assertEquals("frames:endsWith", res.at("/query/frames/0").asText());
+        assertEquals("frames:matches", res.at("/query/frames/1").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
 
         query = "node & \"Mann\" & #1 _r_ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:endsWith",     res.at("/query/frames/0").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:token",         res.at("/query/operands/1/@type").asText());
-        assertEquals("Mann",                res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("frames:endsWith", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/1/wrap/key").asText());
 
         query = "node & \"Mann\" & #2 _r_ #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:endsWith",     res.at("/query/frames/0").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:token",         res.at("/query/operands/0/@type").asText());
-        assertEquals("Mann",                res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("frames:endsWith", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
 
         query = "node & cat=\"VP\" & cat=\"NP\" & #1 _r_ #2 & #2 _l_ #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:startsWith",   res.at("/query/frames/0").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("frames:endsWith",     res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("VP",                  res.at("/query/operands/0/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("NP",                  res.at("/query/operands/1/key").asText());
+        assertEquals("frames:startsWith", res.at("/query/frames/0").asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("frames:endsWith",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "VP",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                        .asText());
+        assertEquals("NP", res.at("/query/operands/1/key").asText());
 
         query = "node & \"Mann\" & #2 _o_ #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:overlapsLeft",     res.at("/query/frames/0").asText());
-        assertEquals("frames:overlapsRight",    res.at("/query/frames/1").asText());
-        assertEquals("koral:span",              res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:token",             res.at("/query/operands/0/@type").asText());
-        assertEquals("Mann",                    res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("frames:overlapsLeft", res.at("/query/frames/0").asText());
+        assertEquals("frames:overlapsRight", res.at("/query/frames/1").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
 
         query = "node & \"Mann\" & #2 _ol_ #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:overlapsLeft",     res.at("/query/frames/0").asText());
-        assertEquals("koral:span",              res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:token",             res.at("/query/operands/0/@type").asText());
-        assertEquals("Mann",                    res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("frames:overlapsLeft", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
 
         query = "node & \"Mann\" & #2 _or_ #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:overlapsRight",    res.at("/query/frames/0").asText());
-        assertEquals("koral:span",              res.at("/query/operands/1/@type").asText());
-        assertEquals("koral:token",             res.at("/query/operands/0/@type").asText());
-        assertEquals("Mann",                    res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("frames:overlapsRight", res.at("/query/frames/0").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
     }
 
-    @Test
-    public void testMultiplePredications() throws Exception {
-        // a noun before a verb before a preposition
-        query = "pos=\"N\" & pos=\"V\" & pos=\"P\" & #1 . #2 & #2 . #3"; 
-        qs.setQuery(query, "annis");
-        res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("operation:sequence",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:token",         res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("p",                   res.at("/query/operands/0/operands/0/operands/0/wrap/layer").asText());
-        assertEquals("N",                   res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,                   res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("V",                   res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("P",                   res.at("/query/operands/1/wrap/key").asText());
 
-        query = "pos=\"N\" & pos=\"V\" & #1 . #2 & #2 . pos=\"P\""; 
+    @Test
+    public void testMultiplePredications () throws Exception {
+        // a noun before a verb before a preposition
+        query = "pos=\"N\" & pos=\"V\" & pos=\"P\" & #1 . #2 & #2 . #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("operation:sequence",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:token",         res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("p",                   res.at("/query/operands/0/operands/0/operands/0/wrap/layer").asText());
-        assertEquals("N",                   res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("V",                   res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("P",                   res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("p",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/layer")
+                        .asText());
+        assertEquals("N",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "V",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("P", res.at("/query/operands/1/wrap/key").asText());
+
+        query = "pos=\"N\" & pos=\"V\" & #1 . #2 & #2 . pos=\"P\"";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("p",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/layer")
+                        .asText());
+        assertEquals("N",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "V",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("P", res.at("/query/operands/1/wrap/key").asText());
 
         query = "pos=\"N\" & pos=\"V\" & pos=\"P\" & #1 > #2 & #1 > #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:relation",  res.at("/query/operation").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("N",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("V",                   res.at("/query/operands/0/operands/0/operands/1/wrap/key").asText());
-        assertEquals("P",                   res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "N",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("V",
+                res.at("/query/operands/0/operands/0/operands/1/wrap/key")
+                        .asText());
+        assertEquals("P", res.at("/query/operands/1/wrap/key").asText());
 
         query = "cat=\"NP\" & pos=\"V\" & pos=\"P\" & #1 > #2 & #1 > #3 & #2 . #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(130,                     res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/operands/0/operands/0/classRef/0").asInt());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("NP",                  res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key").asText());
-        assertEquals(130,                     res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("V",                   res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals(131,                     res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("P",                   res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/1/operation").asText());
-        assertEquals(131,                     res.at("/query/operands/1/classRef/0").asInt());
-        assertEquals(true,                  res.at("/query/operands/1/operands").isMissingNode());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(130, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classRef/0")
+                        .asInt());
+        assertEquals(
+                "operation:relation",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                129,
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "NP",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals(
+                130,
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "V",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals(131,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "P",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("operation:focus", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(131, res.at("/query/operands/1/classRef/0").asInt());
+        assertEquals(true, res.at("/query/operands/1/operands").isMissingNode());
     }
 
+
     @Test
-    public void testUnaryRelations() throws JsonProcessingException, IOException {
+    public void testUnaryRelations () throws JsonProcessingException,
+            IOException {
         query = "node & #1:tokenarity=2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",      res.at("/query/@type").asText());
-        assertEquals("koral:term",      res.at("/query/attr/@type").asText());
-        assertEquals("koral:boundary",  res.at("/query/attr/tokenarity/@type").asText());
-        assertEquals(2,                 res.at("/query/attr/tokenarity/min").asInt());
-        assertEquals(2,                 res.at("/query/attr/tokenarity/max").asInt());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/attr/@type").asText());
+        assertEquals("koral:boundary", res.at("/query/attr/tokenarity/@type")
+                .asText());
+        assertEquals(2, res.at("/query/attr/tokenarity/min").asInt());
+        assertEquals(2, res.at("/query/attr/tokenarity/max").asInt());
 
         query = "cnx/cat=\"NP\" & #1:tokenarity=2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",      res.at("/query/@type").asText());
-        assertEquals("cnx",             res.at("/query/foundry").asText());
-        assertEquals("c",               res.at("/query/layer").asText());
-        assertEquals("NP",              res.at("/query/key").asText());
-        assertEquals("koral:term",      res.at("/query/attr/@type").asText());
-        assertEquals("koral:boundary",  res.at("/query/attr/tokenarity/@type").asText());
-        assertEquals(2,                 res.at("/query/attr/tokenarity/min").asInt());
-        assertEquals(2,                 res.at("/query/attr/tokenarity/max").asInt());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("cnx", res.at("/query/foundry").asText());
+        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("NP", res.at("/query/key").asText());
+        assertEquals("koral:term", res.at("/query/attr/@type").asText());
+        assertEquals("koral:boundary", res.at("/query/attr/tokenarity/@type")
+                .asText());
+        assertEquals(2, res.at("/query/attr/tokenarity/min").asInt());
+        assertEquals(2, res.at("/query/attr/tokenarity/max").asInt());
 
         query = "cnx/cat=\"NP\" & #1:tokenarity=2,5";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(2,                 res.at("/query/attr/tokenarity/min").asInt());
-        assertEquals(5,                 res.at("/query/attr/tokenarity/max").asInt());
+        assertEquals(2, res.at("/query/attr/tokenarity/min").asInt());
+        assertEquals(5, res.at("/query/attr/tokenarity/max").asInt());
 
         query = "cnx/cat=\"NP\" & #1:root";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",      res.at("/query/@type").asText());
-        assertEquals("cnx",             res.at("/query/foundry").asText());
-        assertEquals("c",               res.at("/query/layer").asText());
-        assertEquals("NP",              res.at("/query/key").asText());
-        assertEquals("match:eq",        res.at("/query/match").asText());
-        assertEquals("koral:term",      res.at("/query/attr/@type").asText());
-        assertEquals(true,              res.at("/query/attr/root").asBoolean());
-        
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("cnx", res.at("/query/foundry").asText());
+        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("NP", res.at("/query/key").asText());
+        assertEquals("match:eq", res.at("/query/match").asText());
+        assertEquals("koral:term", res.at("/query/attr/@type").asText());
+        assertEquals(true, res.at("/query/attr/root").asBoolean());
+
         query = "cnx/cat=\"NP\" & #1:root & #1:arity=2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",      res.at("/query/@type").asText());
-        assertEquals("cnx",             res.at("/query/foundry").asText());
-        assertEquals("c",               res.at("/query/layer").asText());
-        assertEquals("NP",              res.at("/query/key").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("cnx", res.at("/query/foundry").asText());
+        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("NP", res.at("/query/key").asText());
         assertEquals("koral:termGroup", res.at("/query/attr/@type").asText());
-        assertEquals("koral:term",      res.at("/query/attr/operands/0/@type").asText());
-        assertEquals(true,              res.at("/query/attr/operands/0/root").asBoolean());
-        assertEquals("koral:term",      res.at("/query/attr/operands/1/@type").asText());
-        assertEquals("koral:boundary",  res.at("/query/attr/operands/1/arity/@type").asText());
-        assertEquals(2,                 res.at("/query/attr/operands/1/arity/min").asInt());
-        assertEquals(2,                 res.at("/query/attr/operands/1/arity/max").asInt());
-        
+        assertEquals("koral:term", res.at("/query/attr/operands/0/@type")
+                .asText());
+        assertEquals(true, res.at("/query/attr/operands/0/root").asBoolean());
+        assertEquals("koral:term", res.at("/query/attr/operands/1/@type")
+                .asText());
+        assertEquals("koral:boundary",
+                res.at("/query/attr/operands/1/arity/@type").asText());
+        assertEquals(2, res.at("/query/attr/operands/1/arity/min").asInt());
+        assertEquals(2, res.at("/query/attr/operands/1/arity/max").asInt());
+
         query = "cnx/cat=\"NP\" & node & #1>#2 & #1:tokenarity=2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",     res.at("/query/@type").asText());
-        assertEquals("operation:relation",     res.at("/query/operation").asText());
-        assertEquals("koral:span",      res.at("/query/operands/0/@type").asText());
-        assertEquals("cnx",             res.at("/query/operands/0/foundry").asText());
-        assertEquals("c",               res.at("/query/operands/0/layer").asText());
-        assertEquals("NP",              res.at("/query/operands/0/key").asText());
-        assertEquals("koral:term",      res.at("/query/operands/0/attr/@type").asText());
-        assertEquals("koral:boundary",  res.at("/query/operands/0/attr/tokenarity/@type").asText());
-        assertEquals(2,                 res.at("/query/operands/0/attr/tokenarity/min").asInt());
-        assertEquals(2,                 res.at("/query/operands/0/attr/tokenarity/max").asInt());
-        assertEquals("koral:span",      res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("cnx", res.at("/query/operands/0/foundry").asText());
+        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("NP", res.at("/query/operands/0/key").asText());
+        assertEquals("koral:term", res.at("/query/operands/0/attr/@type")
+                .asText());
+        assertEquals("koral:boundary",
+                res.at("/query/operands/0/attr/tokenarity/@type").asText());
+        assertEquals(2, res.at("/query/operands/0/attr/tokenarity/min").asInt());
+        assertEquals(2, res.at("/query/operands/0/attr/tokenarity/max").asInt());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
 
     }
 
+
     @Test
-    public void testCommonParent() throws Exception {
+    public void testCommonParent () throws Exception {
         query = "cat=\"NP\" & cat=\"VP\" & #1 $ #2";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("koral:span",          res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals(true,                  res.at("/query/operands/0/operands/0/operands/0/operands/0/key").isMissingNode());
-        assertEquals("koral:span",          res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("NP",                  res.at("/query/operands/0/operands/0/operands/1/key").asText());
-        assertEquals("c",                   res.at("/query/operands/0/operands/0/operands/1/layer").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
-        assertEquals("VP",                  res.at("/query/operands/1/key").asText());
-        assertEquals("c",                   res.at("/query/operands/1/layer").asText());
-        
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                true,
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/key")
+                        .isMissingNode());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("NP", res
+                .at("/query/operands/0/operands/0/operands/1/key").asText());
+        assertEquals("c",
+                res.at("/query/operands/0/operands/0/operands/1/layer")
+                        .asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("VP", res.at("/query/operands/1/key").asText());
+        assertEquals("c", res.at("/query/operands/1/layer").asText());
+
         query = "cat=\"NP\" & cat=\"VP\" & cat=\"PP\" & #1 $ #2 $ #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operation").asText());
-        assertEquals("koral:reference",     res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:focus",     res.at("/query/operands/0/operation").asText());
-        assertEquals(129,                     res.at("/query/operands/0/classRef/0").asInt());
-        assertEquals("koral:group",         res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:reference", res.at("/query/operands/0/@type")
+                .asText());
+        assertEquals("operation:focus", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classRef/0").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:relation",
+                res.at("/query/operands/0/operands/0/operation").asText());
     }
-    
+
+
     @Test
-    public void testDisjunction() throws Exception {
+    public void testDisjunction () throws Exception {
         query = "cat=\"NP\" | cat=\"VP\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:disjunction",  res.at("/query/operation").asText());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("NP",                  res.at("/query/operands/0/key").asText());
-        assertEquals("c",                   res.at("/query/operands/0/layer").asText());
-        assertEquals("koral:span",          res.at("/query/operands/1/@type").asText());
-        assertEquals("VP",                  res.at("/query/operands/1/key").asText());
-        assertEquals("c",                   res.at("/query/operands/1/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("NP", res.at("/query/operands/0/key").asText());
+        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("VP", res.at("/query/operands/1/key").asText());
+        assertEquals("c", res.at("/query/operands/1/layer").asText());
     }
-    
+
     //		
     //		query = "cat=\"NP\" & cat=\"VP\" & cat=\"PP\" & #1 $ #2 $ #3";
     //		String cp2 =
@@ -1060,16 +1443,15 @@
     //	}
 
     /*		
-	@Test
-	public void testEqualNotequalValue() throws Exception {
-		query = "cat=\"NP\" & cat=\"VP\" & #1 == #2";
-		String eq1 =
-				"{}"; // ???
-		aqlt = new AqlTree(query);
-		map = aqlt.getRequestMap().get("query").toString();
-		assertEquals(eq1.replaceAll(" ", ""), map.replaceAll(" ", ""));		
-	}
+    @Test
+    public void testEqualNotequalValue() throws Exception {
+    	query = "cat=\"NP\" & cat=\"VP\" & #1 == #2";
+    	String eq1 =
+    			"{}"; // ???
+    	aqlt = new AqlTree(query);
+    	map = aqlt.getRequestMap().get("query").toString();
+    	assertEquals(eq1.replaceAll(" ", ""), map.replaceAll(" ", ""));		
+    }
      */
 
 }
-
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessorTest.java
index a8b9b6e..62e6d1f 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessorTest.java
@@ -1,4 +1,5 @@
 package de.ids_mannheim.korap.query.serialize;
+
 import static org.junit.Assert.*;
 
 import java.io.IOException;
@@ -14,366 +15,487 @@
 
 public class CollectionQueryProcessorTest {
 
-	String query = "foo";
-	String ql = "poliqarpplus";
-	String collection;
-	ArrayList<JsonNode> operands;
+    String query = "foo";
+    String ql = "poliqarpplus";
+    String collection;
+    ArrayList<JsonNode> operands;
 
-	QuerySerializer qs = new QuerySerializer();
-	ObjectMapper mapper = new ObjectMapper();
-	JsonNode res;
-	
-	@Test
-	public void testContext() throws JsonProcessingException, IOException {
-		collection = "textClass=politik";
-		String contextString = "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals(contextString, res.get("@context").asText());
-	}
-	
-	@Test
-	public void testSimple() throws JsonProcessingException, IOException {
-		collection = "textClass=politik";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/key").asText());
-		assertEquals("politik", 		res.at("/collection/value").asText());
-		assertEquals("match:eq", 		res.at("/collection/match").asText());
-		
-		collection = "textClass!=politik";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/key").asText());
-		assertEquals("politik", 		res.at("/collection/value").asText());
-		assertEquals("match:ne", 		res.at("/collection/match").asText());
-	}
-	
-	@Test
-	public void testContains() throws JsonProcessingException, IOException {
-		collection = "title~Mannheim";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("title", 			res.at("/collection/key").asText());
-		assertEquals("Mannheim", 		res.at("/collection/value").asText());
-		assertEquals("match:contains",  res.at("/collection/match").asText());
-		
-		collection = "title~\"IDS Mannheim\"";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("title",	 		res.at("/collection/key").asText());
-		assertEquals("IDS Mannheim",	res.at("/collection/value").asText());
-		assertEquals("match:contains",	res.at("/collection/match").asText());
-	}
-	
-	@Test
-	public void testTwoConjuncts() throws JsonProcessingException, IOException {
-		collection = "textClass=Sport & pubDate in 2014";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/value").asText());
-		assertEquals("type:date",		res.at("/collection/operands/1/type").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/match").asText());
-		
-		collection = "textClass=Sport & pubDate=2014";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/value").asText());
-		assertEquals(true,				res.at("/collection/operands/1/type").isMissingNode());
-		assertEquals("match:eq",		res.at("/collection/operands/1/match").asText());
-		assertTrue(res.at("/warnings/0/0").asText().startsWith("The collection query contains a value that looks like a date"));
-	}
+    QuerySerializer qs = new QuerySerializer();
+    ObjectMapper mapper = new ObjectMapper();
+    JsonNode res;
 
-	@Test
-	public void testThreeConjuncts() throws JsonProcessingException, IOException {
-		collection = "textClass=Sport & pubDate in 2014 & corpusId=WPD";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:docGroup", 	res.at("/collection/operands/1/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/1/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/0/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/operands/0/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/operands/0/value").asText());
-		assertEquals("type:date",		res.at("/collection/operands/1/operands/0/type").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/1/@type").asText());
-		assertEquals("corpusId", 		res.at("/collection/operands/1/operands/1/key").asText());
-		assertEquals("WPD",				res.at("/collection/operands/1/operands/1/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/1/match").asText());
-	}
-	@Test
-	public void testTwoDisjuncts() throws JsonProcessingException, IOException {
-		collection = "textClass=Sport | pubDate in 2014";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/value").asText());
-		assertEquals("type:date",		res.at("/collection/operands/1/type").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/match").asText());
-	}
-	
-	@Test
-	public void testThreeDisjuncts() throws JsonProcessingException, IOException {
-		collection = "textClass=Sport | pubDate in 2014 | corpusId=WPD";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:docGroup", 	res.at("/collection/operands/1/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operands/1/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/0/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/operands/0/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/operands/0/value").asText());
-		assertEquals("type:date",		res.at("/collection/operands/1/operands/0/type").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/1/@type").asText());
-		assertEquals("corpusId", 		res.at("/collection/operands/1/operands/1/key").asText());
-		assertEquals("WPD",				res.at("/collection/operands/1/operands/1/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/1/match").asText());
-	}
-	
-	@Test
-	public void testMixed() throws JsonProcessingException, IOException {
-		collection = "textClass=Sport | (pubDate in 2014 & corpusId=WPD)";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:docGroup", 	res.at("/collection/operands/1/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/1/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/0/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/operands/0/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/operands/0/value").asText());
-		assertEquals("type:date",		res.at("/collection/operands/1/operands/0/type").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/1/@type").asText());
-		assertEquals("corpusId", 		res.at("/collection/operands/1/operands/1/key").asText());
-		assertEquals("WPD",				res.at("/collection/operands/1/operands/1/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/1/match").asText());
-		
-		collection = "textClass=Sport | pubDate in 2014 & corpusId=WPD";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/@type").asText());
-		assertEquals("textClass", 		res.at("/collection/operands/0/key").asText());
-		assertEquals("Sport",			res.at("/collection/operands/0/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/0/match").asText());
-		assertEquals("koral:docGroup", 	res.at("/collection/operands/1/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/1/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/0/@type").asText());
-		assertEquals("pubDate",	 		res.at("/collection/operands/1/operands/0/key").asText());
-		assertEquals("2014",			res.at("/collection/operands/1/operands/0/value").asText());
-		assertEquals("type:date",		res.at("/collection/operands/1/operands/0/type").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/0/match").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/1/@type").asText());
-		assertEquals("corpusId", 		res.at("/collection/operands/1/operands/1/key").asText());
-		assertEquals("WPD",				res.at("/collection/operands/1/operands/1/value").asText());
-		assertEquals("match:eq",		res.at("/collection/operands/1/operands/1/match").asText());
-		
-		collection = "(textClass=Sport | pubDate in 2014) & corpusId=WPD";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operation").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/0/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operands/0/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/0/@type").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/1/@type").asText());
-		assertEquals("koral:doc",	 	res.at("/collection/operands/1/@type").asText());
-		
-		collection = "(textClass=Sport & pubDate in 2014) & corpusId=WPD";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operation").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/0/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/0/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/0/@type").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/1/@type").asText());
-		assertEquals("koral:doc",	 	res.at("/collection/operands/1/@type").asText());
-		
-		collection = "(textClass=Sport & textClass=ausland) | (corpusID=WPD & author=White)";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operation").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/0/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/0/operation").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/1/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/1/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/0/@type").asText());
-		assertEquals("Sport",	 		res.at("/collection/operands/0/operands/0/value").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/1/@type").asText());
-		assertEquals("ausland",	 		res.at("/collection/operands/0/operands/1/value").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/0/@type").asText());
-		assertEquals("WPD",		 		res.at("/collection/operands/1/operands/0/value").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/1/@type").asText());
-		assertEquals("White",	 		res.at("/collection/operands/1/operands/1/value").asText());
-		
-		collection = "(textClass=Sport & textClass=ausland) | (corpusID=WPD & author=White & pubDate in 2000)";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:docGroup", 	res.at("/collection/@type").asText());
-		assertEquals("operation:or",	res.at("/collection/operation").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/0/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/0/operation").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/1/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/1/operation").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/0/@type").asText());
-		assertEquals("Sport",	 		res.at("/collection/operands/0/operands/0/value").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/0/operands/1/@type").asText());
-		assertEquals("ausland",	 		res.at("/collection/operands/0/operands/1/value").asText());
-		assertEquals("koral:doc", 		res.at("/collection/operands/1/operands/0/@type").asText());
-		assertEquals("WPD",		 		res.at("/collection/operands/1/operands/0/value").asText());
-		assertEquals("koral:docGroup",	res.at("/collection/operands/1/operands/1/@type").asText());
-		assertEquals("operation:and",	res.at("/collection/operands/1/operands/1/operation").asText());
-		assertEquals("White",	 		res.at("/collection/operands/1/operands/1/operands/0/value").asText());
-		assertEquals("2000",	 		res.at("/collection/operands/1/operands/1/operands/1/value").asText());
-	}
 
-	@Test
-	public void testDateYear() throws JsonProcessingException, IOException {
-		collection = "pubDate in 2000";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000",	 		res.at("/collection/value").asText());
-		assertEquals("type:date", 		res.at("/collection/type").asText());
-		assertEquals("match:eq", 		res.at("/collection/match").asText());
-		
-		collection = "pubDate = 2000";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000",	 		res.at("/collection/value").asText());
-		assertEquals(true, 				res.at("/collection/type").isMissingNode());
-		assertEquals("match:eq", 		res.at("/collection/match").asText());
-		
-		collection = "pubDate since 2000";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000",	 		res.at("/collection/value").asText());
-		assertEquals("type:date", 		res.at("/collection/type").asText());
-		assertEquals("match:geq", 		res.at("/collection/match").asText());
-		
-		collection = "pubDate until 2000";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000",	 		res.at("/collection/value").asText());
-		assertEquals("type:date", 		res.at("/collection/type").asText());
-		assertEquals("match:leq", 		res.at("/collection/match").asText());
-	}
-	
-	@Test
-	public void testDateMonthDay() throws JsonProcessingException, IOException {
-		collection = "pubDate in 2000-02";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000-02",	 		res.at("/collection/value").asText());
-		assertEquals("type:date", 		res.at("/collection/type").asText());
-		assertEquals("match:eq", 		res.at("/collection/match").asText());
-		
-		collection = "pubDate = 2000-12";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000-12",	 		res.at("/collection/value").asText());
-		assertEquals(true, 				res.at("/collection/type").isMissingNode());
-		assertEquals("match:eq", 		res.at("/collection/match").asText());
-		
-		collection = "pubDate since 2000-02-01";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000-02-01", 		res.at("/collection/value").asText());
-		assertEquals("type:date", 		res.at("/collection/type").asText());
-		assertEquals("match:geq", 		res.at("/collection/match").asText());
-		
-		collection = "pubDate until 2000-01-01";
-		qs.setQuery(query,ql);
-		qs.setCollection(collection);
-		res = mapper.readTree(qs.toJSON());
-		assertEquals("koral:doc", 		res.at("/collection/@type").asText());
-		assertEquals("pubDate", 		res.at("/collection/key").asText());
-		assertEquals("2000-01-01", 		res.at("/collection/value").asText());
-		assertEquals("type:date", 		res.at("/collection/type").asText());
-		assertEquals("match:leq", 		res.at("/collection/match").asText());
-	}
+    @Test
+    public void testContext () throws JsonProcessingException, IOException {
+        collection = "textClass=politik";
+        String contextString = "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals(contextString, res.get("@context").asText());
+    }
+
+
+    @Test
+    public void testSimple () throws JsonProcessingException, IOException {
+        collection = "textClass=politik";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("textClass", res.at("/collection/key").asText());
+        assertEquals("politik", res.at("/collection/value").asText());
+        assertEquals("match:eq", res.at("/collection/match").asText());
+
+        collection = "textClass!=politik";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("textClass", res.at("/collection/key").asText());
+        assertEquals("politik", res.at("/collection/value").asText());
+        assertEquals("match:ne", res.at("/collection/match").asText());
+    }
+
+
+    @Test
+    public void testContains () throws JsonProcessingException, IOException {
+        collection = "title~Mannheim";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("title", res.at("/collection/key").asText());
+        assertEquals("Mannheim", res.at("/collection/value").asText());
+        assertEquals("match:contains", res.at("/collection/match").asText());
+
+        collection = "title~\"IDS Mannheim\"";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("title", res.at("/collection/key").asText());
+        assertEquals("IDS Mannheim", res.at("/collection/value").asText());
+        assertEquals("match:contains", res.at("/collection/match").asText());
+    }
+
+
+    @Test
+    public void testTwoConjuncts () throws JsonProcessingException, IOException {
+        collection = "textClass=Sport & pubDate in 2014";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:doc", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/key").asText());
+        assertEquals("2014", res.at("/collection/operands/1/value").asText());
+        assertEquals("type:date", res.at("/collection/operands/1/type")
+                .asText());
+        assertEquals("match:eq", res.at("/collection/operands/1/match")
+                .asText());
+
+        collection = "textClass=Sport & pubDate=2014";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:doc", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/key").asText());
+        assertEquals("2014", res.at("/collection/operands/1/value").asText());
+        assertEquals(true, res.at("/collection/operands/1/type")
+                .isMissingNode());
+        assertEquals("match:eq", res.at("/collection/operands/1/match")
+                .asText());
+        assertTrue(res
+                .at("/warnings/0/0")
+                .asText()
+                .startsWith(
+                        "The collection query contains a value that looks like a date"));
+    }
+
+
+    @Test
+    public void testThreeConjuncts () throws JsonProcessingException,
+            IOException {
+        collection = "textClass=Sport & pubDate in 2014 & corpusId=WPD";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/1/operation").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/0/@type").asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/operands/0/key")
+                .asText());
+        assertEquals("2014", res.at("/collection/operands/1/operands/0/value")
+                .asText());
+        assertEquals("type:date",
+                res.at("/collection/operands/1/operands/0/type").asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/0/match").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/1/@type").asText());
+        assertEquals("corpusId", res
+                .at("/collection/operands/1/operands/1/key").asText());
+        assertEquals("WPD", res.at("/collection/operands/1/operands/1/value")
+                .asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/1/match").asText());
+    }
+
+
+    @Test
+    public void testTwoDisjuncts () throws JsonProcessingException, IOException {
+        collection = "textClass=Sport | pubDate in 2014";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:or", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:doc", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/key").asText());
+        assertEquals("2014", res.at("/collection/operands/1/value").asText());
+        assertEquals("type:date", res.at("/collection/operands/1/type")
+                .asText());
+        assertEquals("match:eq", res.at("/collection/operands/1/match")
+                .asText());
+    }
+
+
+    @Test
+    public void testThreeDisjuncts () throws JsonProcessingException,
+            IOException {
+        collection = "textClass=Sport | pubDate in 2014 | corpusId=WPD";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:or", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("operation:or", res.at("/collection/operands/1/operation")
+                .asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/0/@type").asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/operands/0/key")
+                .asText());
+        assertEquals("2014", res.at("/collection/operands/1/operands/0/value")
+                .asText());
+        assertEquals("type:date",
+                res.at("/collection/operands/1/operands/0/type").asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/0/match").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/1/@type").asText());
+        assertEquals("corpusId", res
+                .at("/collection/operands/1/operands/1/key").asText());
+        assertEquals("WPD", res.at("/collection/operands/1/operands/1/value")
+                .asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/1/match").asText());
+    }
+
+
+    @Test
+    public void testMixed () throws JsonProcessingException, IOException {
+        collection = "textClass=Sport | (pubDate in 2014 & corpusId=WPD)";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:or", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/1/operation").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/0/@type").asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/operands/0/key")
+                .asText());
+        assertEquals("2014", res.at("/collection/operands/1/operands/0/value")
+                .asText());
+        assertEquals("type:date",
+                res.at("/collection/operands/1/operands/0/type").asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/0/match").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/1/@type").asText());
+        assertEquals("corpusId", res
+                .at("/collection/operands/1/operands/1/key").asText());
+        assertEquals("WPD", res.at("/collection/operands/1/operands/1/value")
+                .asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/1/match").asText());
+
+        collection = "textClass=Sport | pubDate in 2014 & corpusId=WPD";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:or", res.at("/collection/operation").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("match:eq", res.at("/collection/operands/0/match")
+                .asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/1/operation").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/0/@type").asText());
+        assertEquals("pubDate", res.at("/collection/operands/1/operands/0/key")
+                .asText());
+        assertEquals("2014", res.at("/collection/operands/1/operands/0/value")
+                .asText());
+        assertEquals("type:date",
+                res.at("/collection/operands/1/operands/0/type").asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/0/match").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/1/@type").asText());
+        assertEquals("corpusId", res
+                .at("/collection/operands/1/operands/1/key").asText());
+        assertEquals("WPD", res.at("/collection/operands/1/operands/1/value")
+                .asText());
+        assertEquals("match:eq",
+                res.at("/collection/operands/1/operands/1/match").asText());
+
+        collection = "(textClass=Sport | pubDate in 2014) & corpusId=WPD";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("operation:or", res.at("/collection/operands/0/operation")
+                .asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/0/@type").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/1/@type").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/1/@type")
+                .asText());
+
+        collection = "(textClass=Sport & pubDate in 2014) & corpusId=WPD";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/0/operation").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/0/@type").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/1/@type").asText());
+        assertEquals("koral:doc", res.at("/collection/operands/1/@type")
+                .asText());
+
+        collection = "(textClass=Sport & textClass=ausland) | (corpusID=WPD & author=White)";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:or", res.at("/collection/operation").asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/0/operation").asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/1/operation").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/0/@type").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/operands/0/value")
+                .asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/1/@type").asText());
+        assertEquals("ausland",
+                res.at("/collection/operands/0/operands/1/value").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/0/@type").asText());
+        assertEquals("WPD", res.at("/collection/operands/1/operands/0/value")
+                .asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/1/@type").asText());
+        assertEquals("White", res.at("/collection/operands/1/operands/1/value")
+                .asText());
+
+        collection = "(textClass=Sport & textClass=ausland) | (corpusID=WPD & author=White & pubDate in 2000)";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:or", res.at("/collection/operation").asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/0/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/0/operation").asText());
+        assertEquals("koral:docGroup", res.at("/collection/operands/1/@type")
+                .asText());
+        assertEquals("operation:and", res
+                .at("/collection/operands/1/operation").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/0/@type").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/operands/0/value")
+                .asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/0/operands/1/@type").asText());
+        assertEquals("ausland",
+                res.at("/collection/operands/0/operands/1/value").asText());
+        assertEquals("koral:doc",
+                res.at("/collection/operands/1/operands/0/@type").asText());
+        assertEquals("WPD", res.at("/collection/operands/1/operands/0/value")
+                .asText());
+        assertEquals("koral:docGroup",
+                res.at("/collection/operands/1/operands/1/@type").asText());
+        assertEquals("operation:and",
+                res.at("/collection/operands/1/operands/1/operation").asText());
+        assertEquals("White",
+                res.at("/collection/operands/1/operands/1/operands/0/value")
+                        .asText());
+        assertEquals("2000",
+                res.at("/collection/operands/1/operands/1/operands/1/value")
+                        .asText());
+    }
+
+
+    @Test
+    public void testDateYear () throws JsonProcessingException, IOException {
+        collection = "pubDate in 2000";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000", res.at("/collection/value").asText());
+        assertEquals("type:date", res.at("/collection/type").asText());
+        assertEquals("match:eq", res.at("/collection/match").asText());
+
+        collection = "pubDate = 2000";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000", res.at("/collection/value").asText());
+        assertEquals(true, res.at("/collection/type").isMissingNode());
+        assertEquals("match:eq", res.at("/collection/match").asText());
+
+        collection = "pubDate since 2000";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000", res.at("/collection/value").asText());
+        assertEquals("type:date", res.at("/collection/type").asText());
+        assertEquals("match:geq", res.at("/collection/match").asText());
+
+        collection = "pubDate until 2000";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000", res.at("/collection/value").asText());
+        assertEquals("type:date", res.at("/collection/type").asText());
+        assertEquals("match:leq", res.at("/collection/match").asText());
+    }
+
+
+    @Test
+    public void testDateMonthDay () throws JsonProcessingException, IOException {
+        collection = "pubDate in 2000-02";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000-02", res.at("/collection/value").asText());
+        assertEquals("type:date", res.at("/collection/type").asText());
+        assertEquals("match:eq", res.at("/collection/match").asText());
+
+        collection = "pubDate = 2000-12";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000-12", res.at("/collection/value").asText());
+        assertEquals(true, res.at("/collection/type").isMissingNode());
+        assertEquals("match:eq", res.at("/collection/match").asText());
+
+        collection = "pubDate since 2000-02-01";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000-02-01", res.at("/collection/value").asText());
+        assertEquals("type:date", res.at("/collection/type").asText());
+        assertEquals("match:geq", res.at("/collection/match").asText());
+
+        collection = "pubDate until 2000-01-01";
+        qs.setQuery(query, ql);
+        qs.setCollection(collection);
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("pubDate", res.at("/collection/key").asText());
+        assertEquals("2000-01-01", res.at("/collection/value").asText());
+        assertEquals("type:date", res.at("/collection/type").asText());
+        assertEquals("match:leq", res.at("/collection/match").asText());
+    }
 }
-
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java
index a21ff8c..fa3adc8 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java
@@ -1,4 +1,5 @@
 package de.ids_mannheim.korap.query.serialize;
+
 import static org.junit.Assert.*;
 
 import java.io.IOException;
@@ -14,7 +15,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 /**
- * Tests for JSON-LD serialization of Cosmas II queries. 
+ * Tests for JSON-LD serialization of Cosmas II queries.
+ * 
  * @author Joachim Bingel (bingel@ids-mannheim.de)
  * @version 1.0
  */
@@ -28,8 +30,9 @@
     ObjectMapper mapper = new ObjectMapper();
     JsonNode res;
 
+
     @Test
-    public void testContext() throws JsonProcessingException, IOException {
+    public void testContext () throws JsonProcessingException, IOException {
         String contextString = "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld";
         query = "foo";
         qs.setQuery(query, "cosmas2");
@@ -39,1129 +42,1783 @@
 
 
     @Test
-    public void testSingleToken() throws JsonProcessingException, IOException {
+    public void testSingleToken () throws JsonProcessingException, IOException {
         query = "der";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("der", 				res.at("/query/wrap/key").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("der", res.at("/query/wrap/key").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "&Mann";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("Mann", 				res.at("/query/wrap/key").asText());
-        assertEquals("lemma", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("Mann", res.at("/query/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
     }
 
 
 
     @Test
-    public void testWildcardToken() throws JsonProcessingException, IOException {
+    public void testWildcardToken () throws JsonProcessingException,
+            IOException {
         query = "*der";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("type:wildcard",		res.at("/query/wrap/type").asText());
-        assertEquals("*der", 				res.at("/query/wrap/key").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("type:wildcard", res.at("/query/wrap/type").asText());
+        assertEquals("*der", res.at("/query/wrap/key").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "*de*?r";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("*de*?r", 				res.at("/query/wrap/key").asText());
+        assertEquals("*de*?r", res.at("/query/wrap/key").asText());
     }
+
+
     //	
     @Test
-    public void testCaseSensitivityFlag() throws JsonProcessingException, IOException {
+    public void testCaseSensitivityFlag () throws JsonProcessingException,
+            IOException {
         query = "$deutscher";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("deutscher",			res.at("/query/wrap/key").asText());
-        assertEquals("flags:caseInsensitive",     res.at("/query/wrap/flags/0").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("deutscher", res.at("/query/wrap/key").asText());
+        assertEquals("flags:caseInsensitive", res.at("/query/wrap/flags/0")
+                .asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "$deutscher Bundestag";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:term", 			res.at("/query/operands/0/wrap/@type").asText());
-        assertEquals("deutscher",			res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("flags:caseInsensitive",     res.at("/query/operands/0/wrap/flags/0").asText());
-        assertEquals("orth", 				res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/operands/0/wrap/match").asText());
-        assertEquals("Bundestag",			res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:term", res.at("/query/operands/0/wrap/@type")
+                .asText());
+        assertEquals("deutscher", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("flags:caseInsensitive",
+                res.at("/query/operands/0/wrap/flags/0").asText());
+        assertEquals("orth", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/operands/0/wrap/match")
+                .asText());
+        assertEquals("Bundestag", res.at("/query/operands/1/wrap/key").asText());
     }
 
+
     @Test
-    public void testMORPH() throws JsonProcessingException, IOException {
+    public void testMORPH () throws JsonProcessingException, IOException {
         query = "MORPH(p=V)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			res.at("/query/@type").asText());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("V",					res.at("/query/wrap/key").asText());
-        assertEquals("p",					res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("V", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "MORPH(V)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			res.at("/query/@type").asText());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("V",					res.at("/query/wrap/key").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("V", res.at("/query/wrap/key").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "MORPH(tt/p=V)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			res.at("/query/@type").asText());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("V",					res.at("/query/wrap/key").asText());
-        assertEquals("p",					res.at("/query/wrap/layer").asText());
-        assertEquals("tt",					res.at("/query/wrap/foundry").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("V", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("tt", res.at("/query/wrap/foundry").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "MORPH(tt/p=\"V.*\")";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",         res.at("/query/@type").asText());
-        assertEquals("koral:term",          res.at("/query/wrap/@type").asText());
-        assertEquals("type:regex",          res.at("/query/wrap/type").asText());
-        assertEquals("V.*",                 res.at("/query/wrap/key").asText());
-        assertEquals("p",                   res.at("/query/wrap/layer").asText());
-        assertEquals("tt",                  res.at("/query/wrap/foundry").asText());
-        assertEquals("match:eq",            res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("V.*", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("tt", res.at("/query/wrap/foundry").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "MORPH(mate/m=temp:pres)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			res.at("/query/@type").asText());
-        assertEquals("koral:term", 			res.at("/query/wrap/@type").asText());
-        assertEquals("temp",				res.at("/query/wrap/key").asText());
-        assertEquals("pres",				res.at("/query/wrap/value").asText());
-        assertEquals("m",					res.at("/query/wrap/layer").asText());
-        assertEquals("mate",				res.at("/query/wrap/foundry").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("temp", res.at("/query/wrap/key").asText());
+        assertEquals("pres", res.at("/query/wrap/value").asText());
+        assertEquals("m", res.at("/query/wrap/layer").asText());
+        assertEquals("mate", res.at("/query/wrap/foundry").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "MORPH(tt/p=V & mate/m!=temp:pres)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",			res.at("/query/@type").asText());
-        assertEquals("koral:termGroup",		res.at("/query/wrap/@type").asText());
-        assertEquals("V",					res.at("/query/wrap/operands/0/key").asText());
-        assertEquals("p",					res.at("/query/wrap/operands/0/layer").asText());
-        assertEquals("tt",					res.at("/query/wrap/operands/0/foundry").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/operands/0/match").asText());
-        assertEquals("temp",				res.at("/query/wrap/operands/1/key").asText());
-        assertEquals("pres",				res.at("/query/wrap/operands/1/value").asText());
-        assertEquals("m",					res.at("/query/wrap/operands/1/layer").asText());
-        assertEquals("mate",				res.at("/query/wrap/operands/1/foundry").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/operands/1/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:termGroup", res.at("/query/wrap/@type").asText());
+        assertEquals("V", res.at("/query/wrap/operands/0/key").asText());
+        assertEquals("p", res.at("/query/wrap/operands/0/layer").asText());
+        assertEquals("tt", res.at("/query/wrap/operands/0/foundry").asText());
+        assertEquals("match:eq", res.at("/query/wrap/operands/0/match")
+                .asText());
+        assertEquals("temp", res.at("/query/wrap/operands/1/key").asText());
+        assertEquals("pres", res.at("/query/wrap/operands/1/value").asText());
+        assertEquals("m", res.at("/query/wrap/operands/1/layer").asText());
+        assertEquals("mate", res.at("/query/wrap/operands/1/foundry").asText());
+        assertEquals("match:ne", res.at("/query/wrap/operands/1/match")
+                .asText());
     }
 
+
     @Test
-    public void testSequence() throws JsonProcessingException, IOException {
+    public void testSequence () throws JsonProcessingException, IOException {
         query = "der Mann";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("Mann", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
 
         query = "der Mann schläft";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("schläft",				res.at("/query/operands/2/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/3").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("Mann", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("schläft", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/3").isMissingNode());
 
         query = "der Mann schläft lang";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("schläft",				res.at("/query/operands/2/wrap/key").asText());
-        assertEquals("lang",				res.at("/query/operands/3/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/4").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("Mann", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("schläft", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("lang", res.at("/query/operands/3/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/4").isMissingNode());
 
         query = "der #ELEM(W)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("w",					res.at("/query/operands/1/key").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals(true,					res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("w", res.at("/query/operands/1/key").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
 
         query = "der #ELEM(W) Mann";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("w",					res.at("/query/operands/1/key").asText());
-        assertEquals("koral:span",			res.at("/query/operands/1/@type").asText());
-        assertEquals("Mann",				res.at("/query/operands/2/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/3").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("w", res.at("/query/operands/1/key").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/3").isMissingNode());
 
         query = "der MORPH(p=ADJA) Mann";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("ADJA",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("p",					res.at("/query/operands/1/wrap/layer").asText());
-        assertEquals("Mann",				res.at("/query/operands/2/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/3").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("ADJA", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("p", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("Mann", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/3").isMissingNode());
     }
 
+
     @Test
-    public void testOPOR() throws JsonProcessingException, IOException {
+    public void testOPOR () throws JsonProcessingException, IOException {
         query = "Sonne oder Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("Sonne", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("Mond", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
 
         query = "(Sonne scheint) oder Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("scheint",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("scheint", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
 
         query = "(Sonne scheint) oder (Mond scheint)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/1/operation").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("scheint",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("scheint",				res.at("/query/operands/1/operands/1/wrap/key").asText());
-        assertEquals(true,					res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("scheint", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("scheint", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
+        assertEquals(true, res.at("/query/operands/2").isMissingNode());
     }
 
+
     @Test
-    public void testOPORAND() throws JsonProcessingException, IOException {
+    public void testOPORAND () throws JsonProcessingException, IOException {
         query = "(Sonne oder Mond) und scheint";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/distances/0/max").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operands/0/operation").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("koral:token",			res.at("/query/operands/1/@type").asText());
-        assertEquals("scheint",				res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("t", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/distances/0/max").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/0/operation").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals("scheint", res.at("/query/operands/1/wrap/key").asText());
 
         query = "scheint und (Sonne oder Mond)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/distances/0/max").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/0/@type").asText());
-        assertEquals("scheint",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operands/1/operation").asText());
-        assertEquals("Sonne",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("t", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/distances/0/max").asInt());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("scheint", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/1/operation").asText());
+        assertEquals("Sonne", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
         query = "Regen und scheint und (Sonne oder Mond)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/distances/0/max").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/0/@type").asText());
-        assertEquals("Regen",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/operands/1/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/operands/1/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/operands/1/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/operands/1/distances/0/max").asInt());
-        assertEquals("scheint",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/1/operands/1/@type").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operands/1/operands/1/operation").asText());
-        assertEquals("Sonne",				res.at("/query/operands/1/operands/1/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("t", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/distances/0/max").asInt());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Regen", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/1/distances/0/@type").asText());
+        assertEquals("t", res.at("/query/operands/1/distances/0/key").asText());
+        assertEquals(0, res.at("/query/operands/1/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/operands/1/distances/0/max").asInt());
+        assertEquals("scheint", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/1/operands/1/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/1/operands/1/operation").asText());
+        assertEquals("Sonne",
+                res.at("/query/operands/1/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("Mond",
+                res.at("/query/operands/1/operands/1/operands/1/wrap/key")
+                        .asText());
     }
 
+
     @Test
-    public void testOPNOT() throws JsonProcessingException, IOException {
+    public void testOPNOT () throws JsonProcessingException, IOException {
         query = "Sonne nicht Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/distances/0/max").asInt());
-        assertEquals(true,					res.at("/query/distances/0/exclude").asBoolean());
-        assertEquals("koral:token",			res.at("/query/operands/0/@type").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("t", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/distances/0/max").asInt());
+        assertEquals(true, res.at("/query/distances/0/exclude").asBoolean());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("Mond", res.at("/query/operands/1/wrap/key").asText());
 
         query = "Sonne nicht Mond nicht Sterne";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/distances/0/max").asInt());
-        assertEquals(true,					res.at("/query/distances/0/exclude").asBoolean());
-        assertEquals("koral:token",			res.at("/query/operands/0/@type").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/1/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/operands/1/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/operands/1/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/operands/1/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/operands/1/distances/0/max").asInt());
-        assertEquals(true,					res.at("/query/operands/1/distances/0/exclude").asBoolean());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("Sterne",				res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("t", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/distances/0/max").asInt());
+        assertEquals(true, res.at("/query/distances/0/exclude").asBoolean());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/1/distances/0/@type").asText());
+        assertEquals("t", res.at("/query/operands/1/distances/0/key").asText());
+        assertEquals(0, res.at("/query/operands/1/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/operands/1/distances/0/max").asInt());
+        assertEquals(true, res.at("/query/operands/1/distances/0/exclude")
+                .asBoolean());
+        assertEquals("Mond", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("Sterne", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
         query = "(Sonne nicht Mond) nicht Sterne";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/distances/0/max").asInt());
-        assertEquals(true,					res.at("/query/distances/0/exclude").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
-        assertEquals("cosmas:distance",		res.at("/query/operands/0/distances/0/@type").asText());
-        assertEquals("t",					res.at("/query/operands/0/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/operands/0/distances/0/min").asInt());
-        assertEquals(0,						res.at("/query/operands/0/distances/0/max").asInt());
-        assertEquals(true,					res.at("/query/operands/0/distances/0/exclude").asBoolean());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("koral:token",			res.at("/query/operands/1/@type").asText());
-        assertEquals("Sterne",				res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("t", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/distances/0/max").asInt());
+        assertEquals(true, res.at("/query/distances/0/exclude").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/0/distances/0/@type").asText());
+        assertEquals("t", res.at("/query/operands/0/distances/0/key").asText());
+        assertEquals(0, res.at("/query/operands/0/distances/0/min").asInt());
+        assertEquals(0, res.at("/query/operands/0/distances/0/max").asInt());
+        assertEquals(true, res.at("/query/operands/0/distances/0/exclude")
+                .asBoolean());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals("Sterne", res.at("/query/operands/1/wrap/key").asText());
     }
 
+
     @Test
-    public void testOPPROX() throws JsonProcessingException, IOException {
+    public void testOPPROX () throws JsonProcessingException, IOException {
         query = "Sonne /+w1:4 Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals(true,					res.at("/query/inOrder").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals(129,  					res.at("/query/operands/1/classOut").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals(129, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
 
         query = "Sonne /+w1:4,s0,p1:3 Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals("s",					res.at("/query/distances/1/key").asText());
-        assertEquals(0,						res.at("/query/distances/1/boundary/min").asInt());
-        assertEquals("p",					res.at("/query/distances/2/key").asText());
-        assertEquals(1,						res.at("/query/distances/2/boundary/min").asInt());
-        assertEquals(3,						res.at("/query/distances/2/boundary/max").asInt());
-        assertEquals(true,					res.at("/query/inOrder").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals(129,  					res.at("/query/operands/1/classOut").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("s", res.at("/query/distances/1/key").asText());
+        assertEquals(0, res.at("/query/distances/1/boundary/min").asInt());
+        assertEquals("p", res.at("/query/distances/2/key").asText());
+        assertEquals(1, res.at("/query/distances/2/boundary/min").asInt());
+        assertEquals(3, res.at("/query/distances/2/boundary/max").asInt());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals(129, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
 
         query = "Sonne /+w4 Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
 
         query = "Sonne /-w4 Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals("Mond",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Sonne",				res.at("/query/operands/1/operands/0/wrap/key").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("Mond", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Sonne", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
 
         query = "Sonne /w4 Mond";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals(false,					res.at("/query/inOrder").asBoolean());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mond", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals(false, res.at("/query/inOrder").asBoolean());
     }
 
+
     @Test
-    public void testOPPROXNested() throws JsonProcessingException, IOException {	
+    public void testOPPROXNested () throws JsonProcessingException, IOException {
         query = "Sonne /+w1:4 Mond /+w1:7 Sterne";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals(true,					res.at("/query/inOrder").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals(129,  					res.at("/query/operands/1/classOut").asInt());
-        assertEquals("operation:sequence",	res.at("/query/operands/1/operands/0/operation").asText());
-        assertEquals("w",					res.at("/query/operands/1/operands/0/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/operands/1/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(7,						res.at("/query/operands/1/operands/0/distances/0/boundary/max").asInt());
-        assertEquals(130,  					res.at("/query/operands/1/operands/0/operands/0/classOut").asInt());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals(130,  					res.at("/query/operands/1/operands/0/operands/1/classOut").asInt());
-        assertEquals("Sterne",				res.at("/query/operands/1/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals(129, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/1/operands/0/operation").asText());
+        assertEquals("w", res
+                .at("/query/operands/1/operands/0/distances/0/key").asText());
+        assertEquals(1,
+                res.at("/query/operands/1/operands/0/distances/0/boundary/min")
+                        .asInt());
+        assertEquals(7,
+                res.at("/query/operands/1/operands/0/distances/0/boundary/max")
+                        .asInt());
+        assertEquals(130,
+                res.at("/query/operands/1/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "Mond",
+                res.at("/query/operands/1/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/1/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "Sterne",
+                res.at("/query/operands/1/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "Sonne /+w1:4 Mond /-w1:7 Sterne";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Sterne",				res.at("/query/operands/1/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mond",				res.at("/query/operands/1/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals("Sonne", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals(
+                "Sterne",
+                res.at("/query/operands/1/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "Mond",
+                res.at("/query/operands/1/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "Sonne /-w4 Mond /+w2 Sterne";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals(true,					res.at("/query/inOrder").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/1/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/1/classOut").asInt());
-        assertEquals("Sonne",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("w",					res.at("/query/operands/0/operands/0/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/operands/0/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(2,						res.at("/query/operands/0/operands/0/distances/0/boundary/max").asInt());
-        assertEquals(130,  					res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("Mond",				res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals(130,  					res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("Sterne",				res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(4, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("Sonne", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("w", res
+                .at("/query/operands/0/operands/0/distances/0/key").asText());
+        assertEquals(0,
+                res.at("/query/operands/0/operands/0/distances/0/boundary/min")
+                        .asInt());
+        assertEquals(2,
+                res.at("/query/operands/0/operands/0/distances/0/boundary/max")
+                        .asInt());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "Mond",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "Sterne",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
     }
 
+
     @Test
-    public void testOPIN() throws JsonProcessingException, IOException {
+    public void testOPIN () throws JsonProcessingException, IOException {
         query = "wegen #IN <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(130,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operation").asText());
-        assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/0/frames/0").isMissingNode());
-        assertEquals(129,  							res.at("/query/operands/0/classIn/0").asInt());
-        assertEquals(130,  							res.at("/query/operands/0/classIn/1").asInt());
-        assertEquals(131,                           res.at("/query/operands/0/classOut").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(130,  							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:token",					res.at("/query/operands/0/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("wegen",						res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(130, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("classRefCheck:includes",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/0/frames/0")
+                .isMissingNode());
+        assertEquals(129, res.at("/query/operands/0/classIn/0").asInt());
+        assertEquals(130, res.at("/query/operands/0/classIn/1").asInt());
+        assertEquals(131, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "s",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:token",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "wegen",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "wegen #IN(L) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",             res.at("/query/@type").asText());
-        assertEquals("operation:focus",             res.at("/query/operation").asText());
-        assertEquals(130,                           res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",                 res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",          res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:startsWith",           res.at("/query/operands/0/frames/0").asText());
-        assertEquals("frames:matches",              res.at("/query/operands/0/frames/1").asText());
-        assertEquals(true,                          res.at("/query/operands/0/frames/2").isMissingNode());
-        assertEquals("koral:group",                 res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",             res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals(129,                           res.at("/query/operands/0/operands/0/classOut").asInt());
-        assertEquals("koral:span",                  res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("s",                           res.at("/query/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",                 res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",             res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(130,                           res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:token",                 res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("wegen",                       res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(130, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:startsWith", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/1")
+                .asText());
+        assertEquals(true, res.at("/query/operands/0/frames/2").isMissingNode());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals(129, res.at("/query/operands/0/operands/0/classOut")
+                .asInt());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/operands/0/key")
+                .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(130, res.at("/query/operands/0/operands/1/classOut")
+                .asInt());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("wegen",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "wegen #IN(F) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(true,                  		res.at("/query/operands/0/classRefCheck").isMissingNode());
-        assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/frames/1").isMissingNode());
+        assertEquals(true, res.at("/query/operands/0/classRefCheck")
+                .isMissingNode());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals(true, res.at("/query/operands/0/frames/1").isMissingNode());
 
         query = "wegen #IN(FI) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:unequals",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
+        assertEquals("classRefCheck:unequals",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/0/frames/1")
+                .isMissingNode());
 
         query = "wegen #IN(FE) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
+        assertEquals("classRefCheck:equals",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/0/frames/1")
+                .isMissingNode());
 
         query = "wegen #IN(%, L) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/frames/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/frames/1").asText());
+        assertEquals("frames:startsWith", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/1")
+                .asText());
         //        assertEquals(true,                          res.at("/query/operands/0/operands/0/exclude").isMissingNode());
 
         query = "wegen #IN(FE,%,MIN) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("classRefCheck:equals",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
         //        assertEquals(true,							res.at("/query/operands/0/operands/0/exclude").isMissingNode());
 
         query = "wegen #IN(FE,ALL,%,MIN) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:class",             res.at("/query/operation").asText());
-        assertEquals("classRefOp:delete",           res.at("/query/classRefOp").asText());
-        assertEquals(131,                           res.at("/query/classIn/0").asInt());
-        assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/0/exclude").asBoolean());
+        assertEquals("operation:class", res.at("/query/operation").asText());
+        assertEquals("classRefOp:delete", res.at("/query/classRefOp").asText());
+        assertEquals(131, res.at("/query/classIn/0").asInt());
+        assertEquals("classRefCheck:equals",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/0/exclude")
+                .asBoolean());
 
         query = "wegen #IN(FE,ALL,%,MAX) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:merge",             res.at("/query/operation").asText());
-        assertEquals("operation:class",             res.at("/query/operands/0/operation").asText());
-        assertEquals("classRefOp:delete",           res.at("/query/operands/0/classRefOp").asText());
-        assertEquals(131,                           res.at("/query/operands/0/classIn/0").asInt());
-        assertEquals("classRefCheck:equals",        res.at("/query/operands/0/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",              res.at("/query/operands/0/operands/0/operands/0/frames/0").asText());
-        assertEquals(true,                          res.at("/query/operands/0/operands/0/operands/0/exclude").asBoolean());
+        assertEquals("operation:merge", res.at("/query/operation").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("classRefOp:delete", res
+                .at("/query/operands/0/classRefOp").asText());
+        assertEquals(131, res.at("/query/operands/0/classIn/0").asInt());
+        assertEquals("classRefCheck:equals",
+                res.at("/query/operands/0/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/operands/0/frames/0")
+                        .asText());
+        assertEquals(true,
+                res.at("/query/operands/0/operands/0/operands/0/exclude")
+                        .asBoolean());
     }
 
+
     @Test
-    public void testOPOV() throws JsonProcessingException, IOException {
+    public void testOPOV () throws JsonProcessingException, IOException {
         query = "wegen #OV <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(130,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operation").asText());
-        assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(130, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("classRefCheck:intersects",
+                res.at("/query/operands/0/classRefCheck/0").asText());
         //		assertEquals("classRefOp:merge",            res.at("/query/operands/0/classRefOp").asText());
-        assertEquals(131,                           res.at("/query/operands/0/classOut").asInt());
-        assertEquals(129,                           res.at("/query/operands/0/classIn/0").asInt());
-        assertEquals(130,                           res.at("/query/operands/0/classIn/1").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/0/frames/0").isMissingNode());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(130,  							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:token",					res.at("/query/operands/0/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("wegen",						res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals(131, res.at("/query/operands/0/classOut").asInt());
+        assertEquals(129, res.at("/query/operands/0/classIn/0").asInt());
+        assertEquals(130, res.at("/query/operands/0/classIn/1").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/0/frames/0")
+                .isMissingNode());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "s",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:token",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "wegen",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "wegen #OV(L) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals("frames:overlapsLeft",			res.at("/query/operands/0/operands/0/frames/1").asText());
-        assertEquals("frames:matches",              res.at("/query/operands/0/operands/0/frames/2").asText());
+        assertEquals("classRefCheck:intersects",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:startsWith",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("frames:overlapsLeft",
+                res.at("/query/operands/0/operands/0/frames/1").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/2").asText());
 
         query = "wegen #OV(F) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
+        assertEquals("classRefCheck:intersects",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/0/frames/1")
+                .isMissingNode());
 
         query = "wegen #OV(FI) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:unequals",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("classRefCheck:unequals",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
 
         query = "wegen #OV(FE) <s>";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("classRefCheck:equals",
+                res.at("/query/operands/0/classRefCheck/0").asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
     }
 
 
     @Test
-    public void testBEG_END() throws JsonProcessingException, IOException {
+    public void testBEG_END () throws JsonProcessingException, IOException {
         query = "#BEG(der /w3:5 Mann)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",		res.at("/query/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operation").asText());
-        assertEquals(0,						res.at("/query/spanRef/0").asInt());
-        assertEquals(1,						res.at("/query/spanRef/1").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/0/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/0/distances/0/key").asText());
-        assertEquals(3,						res.at("/query/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(5,						res.at("/query/operands/0/distances/0/boundary/max").asInt());
-        assertEquals(false,					res.at("/query/operands/0/inOrder").asBoolean());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("der",					res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(0, res.at("/query/spanRef/0").asInt());
+        assertEquals(1, res.at("/query/spanRef/1").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/0/distances/0/@type").asText());
+        assertEquals("w", res.at("/query/operands/0/distances/0/key").asText());
+        assertEquals(3, res.at("/query/operands/0/distances/0/boundary/min")
+                .asInt());
+        assertEquals(5, res.at("/query/operands/0/distances/0/boundary/max")
+                .asInt());
+        assertEquals(false, res.at("/query/operands/0/inOrder").asBoolean());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mann", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
 
         query = "#BEG(der /w3:5 Mann) /+w10 kommt";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(10,					res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals(true,					res.at("/query/inOrder").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals("koral:reference",		res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals(0,						res.at("/query/operands/0/operands/0/spanRef/0").asInt());
-        assertEquals(1,						res.at("/query/operands/0/operands/0/spanRef/1").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/0/operands/0/operands/0/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/0/operands/0/operands/0/distances/0/key").asText());
-        assertEquals(3,						res.at("/query/operands/0/operands/0/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(5,						res.at("/query/operands/0/operands/0/operands/0/distances/0/boundary/max").asInt());
-        assertEquals(false,					res.at("/query/operands/0/operands/0/operands/0/inOrder").asBoolean());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("der",					res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/0/operands/0/operands/0/operands/1/wrap/key").asText());
-        assertEquals("operation:class",		res.at("/query/operands/1/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/1/classOut").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/1/operands/0/@type").asText());
-        assertEquals("kommt",				res.at("/query/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(10, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals(0, res.at("/query/operands/0/operands/0/spanRef/0")
+                .asInt());
+        assertEquals(1, res.at("/query/operands/0/operands/0/spanRef/1")
+                .asInt());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "cosmas:distance",
+                res.at("/query/operands/0/operands/0/operands/0/distances/0/@type")
+                        .asText());
+        assertEquals(
+                "w",
+                res.at("/query/operands/0/operands/0/operands/0/distances/0/key")
+                        .asText());
+        assertEquals(
+                3,
+                res.at("/query/operands/0/operands/0/operands/0/distances/0/boundary/min")
+                        .asInt());
+        assertEquals(
+                5,
+                res.at("/query/operands/0/operands/0/operands/0/distances/0/boundary/max")
+                        .asInt());
+        assertEquals(false,
+                res.at("/query/operands/0/operands/0/operands/0/inOrder")
+                        .asBoolean());
+        assertEquals(
+                "koral:token",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "Mann",
+                res.at("/query/operands/0/operands/0/operands/0/operands/1/wrap/key")
+                        .asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/0/@type").asText());
+        assertEquals("kommt", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
 
         query = "kommt /+w10 #BEG(der /w3:5 Mann)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(0,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(10,					res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals(true,					res.at("/query/inOrder").asBoolean());
-        assertEquals("koral:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/1/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/1/classOut").asInt());
-        assertEquals("koral:reference",		res.at("/query/operands/1/operands/0/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operands/1/operands/0/operation").asText());
-        assertEquals(0,						res.at("/query/operands/1/operands/0/spanRef/0").asInt());
-        assertEquals(1,						res.at("/query/operands/1/operands/0/spanRef/1").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/1/operands/0/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/1/operands/0/operands/0/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/1/operands/0/operands/0/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/1/operands/0/operands/0/distances/0/key").asText());
-        assertEquals(3,						res.at("/query/operands/1/operands/0/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(5,						res.at("/query/operands/1/operands/0/operands/0/distances/0/boundary/max").asInt());
-        assertEquals(false,					res.at("/query/operands/1/operands/0/operands/0/inOrder").asBoolean());
-        assertEquals("koral:token",			res.at("/query/operands/1/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("der",					res.at("/query/operands/1/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/1/operands/0/operands/0/operands/1/wrap/key").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("kommt",				res.at("/query/operands/0/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(0, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(10, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(true, res.at("/query/inOrder").asBoolean());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("koral:reference",
+                res.at("/query/operands/1/operands/0/@type").asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/1/operands/0/operation").asText());
+        assertEquals(0, res.at("/query/operands/1/operands/0/spanRef/0")
+                .asInt());
+        assertEquals(1, res.at("/query/operands/1/operands/0/spanRef/1")
+                .asInt());
+        assertEquals("koral:group",
+                res.at("/query/operands/1/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/1/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "cosmas:distance",
+                res.at("/query/operands/1/operands/0/operands/0/distances/0/@type")
+                        .asText());
+        assertEquals(
+                "w",
+                res.at("/query/operands/1/operands/0/operands/0/distances/0/key")
+                        .asText());
+        assertEquals(
+                3,
+                res.at("/query/operands/1/operands/0/operands/0/distances/0/boundary/min")
+                        .asInt());
+        assertEquals(
+                5,
+                res.at("/query/operands/1/operands/0/operands/0/distances/0/boundary/max")
+                        .asInt());
+        assertEquals(false,
+                res.at("/query/operands/1/operands/0/operands/0/inOrder")
+                        .asBoolean());
+        assertEquals(
+                "koral:token",
+                res.at("/query/operands/1/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "der",
+                res.at("/query/operands/1/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "Mann",
+                res.at("/query/operands/1/operands/0/operands/0/operands/1/wrap/key")
+                        .asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("kommt", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
 
         query = "#END(der /w3:5 Mann)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",		res.at("/query/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operation").asText());
-        assertEquals(-1,					res.at("/query/spanRef/0").asInt());
-        assertEquals(1,						res.at("/query/spanRef/1").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/0/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/0/distances/0/key").asText());
-        assertEquals(3,						res.at("/query/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(5,						res.at("/query/operands/0/distances/0/boundary/max").asInt());
-        assertEquals(false,					res.at("/query/operands/0/inOrder").asBoolean());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("der",					res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",				res.at("/query/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(-1, res.at("/query/spanRef/0").asInt());
+        assertEquals(1, res.at("/query/spanRef/1").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/0/distances/0/@type").asText());
+        assertEquals("w", res.at("/query/operands/0/distances/0/key").asText());
+        assertEquals(3, res.at("/query/operands/0/distances/0/boundary/min")
+                .asInt());
+        assertEquals(5, res.at("/query/operands/0/distances/0/boundary/max")
+                .asInt());
+        assertEquals(false, res.at("/query/operands/0/inOrder").asBoolean());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mann", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
     }
 
+
     @Test
-    public void testELEM() throws JsonProcessingException, IOException {
+    public void testELEM () throws JsonProcessingException, IOException {
         query = "#ELEM(S)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",		res.at("/query/@type").asText());
-        assertEquals("s",				res.at("/query/key").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("s", res.at("/query/key").asText());
 
         query = "#ELEM(W ANA=N)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",		res.at("/query/@type").asText());
-        assertEquals("w",				res.at("/query/key").asText());
-        assertEquals("koral:term",		res.at("/query/attr/@type").asText());
-        assertEquals("N",				res.at("/query/attr/key").asText());
-        assertEquals("p",				res.at("/query/attr/layer").asText());
-        assertEquals("match:eq",		res.at("/query/attr/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("w", res.at("/query/key").asText());
+        assertEquals("koral:term", res.at("/query/attr/@type").asText());
+        assertEquals("N", res.at("/query/attr/key").asText());
+        assertEquals("p", res.at("/query/attr/layer").asText());
+        assertEquals("match:eq", res.at("/query/attr/match").asText());
 
         query = "#ELEM(W ANA != 'N V')";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",		res.at("/query/@type").asText());
-        assertEquals("w",				res.at("/query/key").asText());
-        assertEquals("koral:termGroup",	res.at("/query/attr/@type").asText());
-        assertEquals("relation:and",	res.at("/query/attr/relation").asText());
-        assertEquals("koral:term",		res.at("/query/attr/operands/0/@type").asText());
-        assertEquals("N",				res.at("/query/attr/operands/0/key").asText());
-        assertEquals("p",				res.at("/query/attr/operands/0/layer").asText());
-        assertEquals("match:ne",		res.at("/query/attr/operands/0/match").asText());
-        assertEquals("koral:term",		res.at("/query/attr/operands/1/@type").asText());
-        assertEquals("V",				res.at("/query/attr/operands/1/key").asText());
-        assertEquals("p",				res.at("/query/attr/operands/1/layer").asText());
-        assertEquals("match:ne",		res.at("/query/attr/operands/1/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("w", res.at("/query/key").asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/@type").asText());
+        assertEquals("relation:and", res.at("/query/attr/relation").asText());
+        assertEquals("koral:term", res.at("/query/attr/operands/0/@type")
+                .asText());
+        assertEquals("N", res.at("/query/attr/operands/0/key").asText());
+        assertEquals("p", res.at("/query/attr/operands/0/layer").asText());
+        assertEquals("match:ne", res.at("/query/attr/operands/0/match")
+                .asText());
+        assertEquals("koral:term", res.at("/query/attr/operands/1/@type")
+                .asText());
+        assertEquals("V", res.at("/query/attr/operands/1/key").asText());
+        assertEquals("p", res.at("/query/attr/operands/1/layer").asText());
+        assertEquals("match:ne", res.at("/query/attr/operands/1/match")
+                .asText());
 
         query = "#ELEM(W ANA != 'N A V' Genre = Sport)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",		res.at("/query/@type").asText());
-        assertEquals("w",				res.at("/query/key").asText());
-        assertEquals("koral:termGroup",	res.at("/query/attr/@type").asText());
-        assertEquals("relation:and",	res.at("/query/attr/relation").asText());
-        assertEquals("koral:termGroup",	res.at("/query/attr/operands/0/@type").asText());
-        assertEquals("relation:and",	res.at("/query/attr/operands/0/relation").asText());
-        assertEquals("N",				res.at("/query/attr/operands/0/operands/0/key").asText());
-        assertEquals("A",				res.at("/query/attr/operands/0/operands/1/key").asText());
-        assertEquals("V",				res.at("/query/attr/operands/0/operands/2/key").asText());
-        assertEquals("Genre",			res.at("/query/attr/operands/1/layer").asText());
-        assertEquals("Sport",			res.at("/query/attr/operands/1/key").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("w", res.at("/query/key").asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/@type").asText());
+        assertEquals("relation:and", res.at("/query/attr/relation").asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/operands/0/@type")
+                .asText());
+        assertEquals("relation:and", res.at("/query/attr/operands/0/relation")
+                .asText());
+        assertEquals("N", res.at("/query/attr/operands/0/operands/0/key")
+                .asText());
+        assertEquals("A", res.at("/query/attr/operands/0/operands/1/key")
+                .asText());
+        assertEquals("V", res.at("/query/attr/operands/0/operands/2/key")
+                .asText());
+        assertEquals("Genre", res.at("/query/attr/operands/1/layer").asText());
+        assertEquals("Sport", res.at("/query/attr/operands/1/key").asText());
 
         query = "#ELEM(W ANA != 'N A V' Genre != 'Sport Politik')";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",		res.at("/query/@type").asText());
-        assertEquals("w",				res.at("/query/key").asText());
-        assertEquals("koral:termGroup",	res.at("/query/attr/@type").asText());
-        assertEquals("relation:and",	res.at("/query/attr/relation").asText());
-        assertEquals("koral:termGroup",	res.at("/query/attr/operands/0/@type").asText());
-        assertEquals("relation:and",	res.at("/query/attr/operands/0/relation").asText());
-        assertEquals("koral:termGroup",	res.at("/query/attr/operands/1/@type").asText());
-        assertEquals("relation:and",	res.at("/query/attr/operands/1/relation").asText());
-        assertEquals("N",				res.at("/query/attr/operands/0/operands/0/key").asText());
-        assertEquals("A",				res.at("/query/attr/operands/0/operands/1/key").asText());
-        assertEquals("V",				res.at("/query/attr/operands/0/operands/2/key").asText());
-        assertEquals("match:ne",		res.at("/query/attr/operands/0/operands/2/match").asText());
-        assertEquals("Genre",			res.at("/query/attr/operands/1/operands/0/layer").asText());
-        assertEquals("Sport",			res.at("/query/attr/operands/1/operands/0/key").asText());
-        assertEquals("Genre",			res.at("/query/attr/operands/1/operands/1/layer").asText());
-        assertEquals("Politik",			res.at("/query/attr/operands/1/operands/1/key").asText());
-        assertEquals("match:ne",		res.at("/query/attr/operands/1/operands/1/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("w", res.at("/query/key").asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/@type").asText());
+        assertEquals("relation:and", res.at("/query/attr/relation").asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/operands/0/@type")
+                .asText());
+        assertEquals("relation:and", res.at("/query/attr/operands/0/relation")
+                .asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/operands/1/@type")
+                .asText());
+        assertEquals("relation:and", res.at("/query/attr/operands/1/relation")
+                .asText());
+        assertEquals("N", res.at("/query/attr/operands/0/operands/0/key")
+                .asText());
+        assertEquals("A", res.at("/query/attr/operands/0/operands/1/key")
+                .asText());
+        assertEquals("V", res.at("/query/attr/operands/0/operands/2/key")
+                .asText());
+        assertEquals("match:ne",
+                res.at("/query/attr/operands/0/operands/2/match").asText());
+        assertEquals("Genre", res.at("/query/attr/operands/1/operands/0/layer")
+                .asText());
+        assertEquals("Sport", res.at("/query/attr/operands/1/operands/0/key")
+                .asText());
+        assertEquals("Genre", res.at("/query/attr/operands/1/operands/1/layer")
+                .asText());
+        assertEquals("Politik", res.at("/query/attr/operands/1/operands/1/key")
+                .asText());
+        assertEquals("match:ne",
+                res.at("/query/attr/operands/1/operands/1/match").asText());
     }
+
+
     @Test
-    public void testOPALL() throws JsonProcessingException, IOException {
+    public void testOPALL () throws JsonProcessingException, IOException {
         query = "#ALL(gehen /w1:10 voran)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("gehen",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("voran",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(10,					res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("gehen", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("voran", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(10, res.at("/query/distances/0/boundary/max").asInt());
 
         query = "#ALL(gehen /w1:10 (voran /w1:4 schnell))";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",			res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(10,					res.at("/query/distances/0/boundary/max").asInt());
-        assertEquals("gehen",				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/1/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/1/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/1/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/operands/1/distances/0/boundary/min").asInt());
-        assertEquals(4,						res.at("/query/operands/1/distances/0/boundary/max").asInt());
-        assertEquals("voran",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("schnell",				res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("cosmas:distance", res.at("/query/distances/0/@type")
+                .asText());
+        assertEquals("w", res.at("/query/distances/0/key").asText());
+        assertEquals(1, res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(10, res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals("gehen", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/1/distances/0/@type").asText());
+        assertEquals("w", res.at("/query/operands/1/distances/0/key").asText());
+        assertEquals(1, res.at("/query/operands/1/distances/0/boundary/min")
+                .asInt());
+        assertEquals(4, res.at("/query/operands/1/distances/0/boundary/max")
+                .asInt());
+        assertEquals("voran", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("schnell", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
 
     }
 
+
     @Test
-    public void testOPNHIT() throws JsonProcessingException, IOException {
+    public void testOPNHIT () throws JsonProcessingException, IOException {
         query = "#NHIT(gehen /w1:10 voran)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",		res.at("/query/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operation").asText());
-        assertEquals(129,  					res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals("classRefOp:inversion",res.at("/query/operands/0/classRefOp").asText());
-        assertEquals(130,  					res.at("/query/operands/0/classIn/0").asInt());
-        assertEquals(131,  					res.at("/query/operands/0/classIn/1").asInt());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/0/operands/0/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/0/operands/0/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/operands/0/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(10,					res.at("/query/operands/0/operands/0/distances/0/boundary/max").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(130,  					res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals(131,  					res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:token",			res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("gehen",				res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("voran",				res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("classRefOp:inversion",
+                res.at("/query/operands/0/classRefOp").asText());
+        assertEquals(130, res.at("/query/operands/0/classIn/0").asInt());
+        assertEquals(131, res.at("/query/operands/0/classIn/1").asInt());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/0/operands/0/distances/0/@type")
+                        .asText());
+        assertEquals("w", res
+                .at("/query/operands/0/operands/0/distances/0/key").asText());
+        assertEquals(1,
+                res.at("/query/operands/0/operands/0/distances/0/boundary/min")
+                        .asInt());
+        assertEquals(10,
+                res.at("/query/operands/0/operands/0/distances/0/boundary/max")
+                        .asInt());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(131,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "koral:token",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "gehen",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "voran",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "#NHIT(gehen /w1:10 voran /w1:10 Beispiel)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",		res.at("/query/@type").asText());
-        assertEquals("operation:focus",		res.at("/query/operation").asText());
-        assertEquals(129,  					res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
-        assertEquals("classRefOp:inversion",res.at("/query/operands/0/classRefOp").asText());
-        assertEquals(130,  					res.at("/query/operands/0/classIn/0").asInt());
-        assertEquals(131,  					res.at("/query/operands/0/classIn/1").asInt());
-        assertEquals(129,  					res.at("/query/operands/0/classOut").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("koral:distance",		res.at("/query/operands/0/operands/0/distances/0/@type").asText());
-        assertEquals("w",					res.at("/query/operands/0/operands/0/distances/0/key").asText());
-        assertEquals(1,						res.at("/query/operands/0/operands/0/distances/0/boundary/min").asInt());
-        assertEquals(10,					res.at("/query/operands/0/operands/0/distances/0/boundary/max").asInt());
-        assertEquals("koral:group",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("operation:class",		res.at("/query/operands/0/operands/0/operands/0/operation").asText());
-        assertEquals(130,  					res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
-        assertEquals("gehen",				res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals(131,                     res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals("classRefOp:inversion",
+                res.at("/query/operands/0/classRefOp").asText());
+        assertEquals(130, res.at("/query/operands/0/classIn/0").asInt());
+        assertEquals(131, res.at("/query/operands/0/classIn/1").asInt());
+        assertEquals(129, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("cosmas:distance",
+                res.at("/query/operands/0/operands/0/distances/0/@type")
+                        .asText());
+        assertEquals("w", res
+                .at("/query/operands/0/operands/0/distances/0/key").asText());
+        assertEquals(1,
+                res.at("/query/operands/0/operands/0/distances/0/boundary/min")
+                        .asInt());
+        assertEquals(10,
+                res.at("/query/operands/0/operands/0/distances/0/boundary/max")
+                        .asInt());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "gehen",
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(131,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
         //        assertEquals("classRefOp:merge",    res.at("/query/operands/0/operands/0/operands/1/classRefOp").asText());
-        assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals(132,  					res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/classOut").asInt());
-        assertEquals("voran",				res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals(132, 					res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/classOut").asInt());
-        assertEquals("Beispiel",			res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/operands/0/wrap/key").asText());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                132,
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "voran",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                132,
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "Beispiel",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
 
     }
 
+
     @Test
-    public void testOPBED() throws JsonProcessingException, IOException {
+    public void testOPBED () throws JsonProcessingException, IOException {
         query = "#BED(der , sa)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(129,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/frames/0").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:token",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:startsWith", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(129, res.at("/query/operands/0/operands/1/classOut")
+                .asInt());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("der",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:span", res.at("/query/operands/0/operands/0/@type")
+                .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/key").asText());
 
         query = "#BED(der Mann , +pe)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(129,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
-        assertEquals("koral:reference",				res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals(-1,							res.at("/query/operands/0/operands/0/spanRef/0").asInt());
-        assertEquals(1,								res.at("/query/operands/0/operands/0/spanRef/1").asInt());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("p",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:reference",				res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(0,								res.at("/query/operands/0/operands/1/spanRef/0").asInt());
-        assertEquals(1,								res.at("/query/operands/0/operands/1/spanRef/1").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/1/operands/0/classOut").asInt());
-        assertEquals("operation:sequence",			res.at("/query/operands/0/operands/1/operands/0/operands/0/operation").asText());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",						res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals(-1, res.at("/query/operands/0/operands/0/spanRef/0")
+                .asInt());
+        assertEquals(1, res.at("/query/operands/0/operands/0/spanRef/1")
+                .asInt());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("p", res.at("/query/operands/0/operands/0/operands/0/key")
+                .asText());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(0, res.at("/query/operands/0/operands/1/spanRef/0")
+                .asInt());
+        assertEquals(1, res.at("/query/operands/0/operands/1/spanRef/1")
+                .asInt());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/1/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "Mann",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/wrap/key")
+                        .asText());
 
         query = "#BED(der Mann , sa,-pa)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(129,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/0")
+                .asText());
 
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("operation:sequence",			res.at("/query/operands/0/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals("der",							res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",						res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("frames:startsWith",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/operands/0/key")
+                .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "Mann",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/key")
+                        .asText());
 
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/1/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/1/exclude").asBoolean());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("p",							res.at("/query/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/1/operation").asText());
-        assertEquals(130,  							res.at("/query/operands/0/operands/1/operands/1/classOut").asInt());
-        assertEquals("operation:sequence",			res.at("/query/operands/0/operands/1/operands/1/operands/0/operation").asText());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/1/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Mann",						res.at("/query/operands/0/operands/1/operands/1/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals("frames:startsWith",
+                res.at("/query/operands/0/operands/1/frames/0").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/1/exclude")
+                .asBoolean());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("p", res.at("/query/operands/0/operands/1/operands/0/key")
+                .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/1/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operands/1/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/1/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/1/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/1/operands/1/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "Mann",
+                res.at("/query/operands/0/operands/1/operands/1/operands/0/operands/1/wrap/key")
+                        .asText());
 
     }
 
+
     @Test
-    public void testColonSeparatedConditions() throws JsonProcessingException, IOException {
+    public void testColonSeparatedConditions () throws JsonProcessingException,
+            IOException {
         query = "der:sa";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(129,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/frames/0").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("koral:token",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:startsWith", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(129, res.at("/query/operands/0/operands/1/classOut")
+                .asInt());
+        assertEquals("koral:token",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("der",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:span", res.at("/query/operands/0/operands/0/@type")
+                .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/key").asText());
 
         query = "der:sa,-pa";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(129,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("der",							res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/1/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/1/exclude").asBoolean());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("p",							res.at("/query/operands/0/operands/1/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/1/operation").asText());
-        assertEquals(130,  							res.at("/query/operands/0/operands/1/operands/1/classOut").asInt());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("frames:startsWith",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/operands/0/key")
+                .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals("frames:startsWith",
+                res.at("/query/operands/0/operands/1/frames/0").asText());
+        assertEquals(true, res.at("/query/operands/0/operands/1/exclude")
+                .asBoolean());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("p", res.at("/query/operands/0/operands/1/operands/0/key")
+                .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/1/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operands/1/operation")
+                        .asText());
+        assertEquals(130,
+                res.at("/query/operands/0/operands/1/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/1/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "der:sa,-pa,+te";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference",				res.at("/query/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operation").asText());
-        assertEquals(129,  							res.at("/query/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/0/frames/0").asText());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(129,  							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("der",							res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:reference",				res.at("/query/operands/0/operands/1/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(130,  							res.at("/query/operands/0/operands/1/classRef/0").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/1/operands/0/frames/0").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/0/operands/0/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operands/0/operands/0/operation").asText());
-        assertEquals("frames:startsWith",			res.at("/query/operands/0/operands/1/operands/0/operands/0/frames/0").asText());
-        assertEquals(true,							res.at("/query/operands/0/operands/1/operands/0/operands/0/exclude").asBoolean());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("p",							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operation").asText());
-        assertEquals(130,  							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/classOut").asInt());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/0/operands/1/@type").asText());
-        assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operands/0/operands/1/operation").asText());
-        assertEquals("frames:matches",				res.at("/query/operands/0/operands/1/operands/0/operands/1/frames/0").asText());
-        assertEquals("koral:reference",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals(-1,							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/spanRef/0").asInt());
-        assertEquals(1,								res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/spanRef/1").asInt());
-        assertEquals("koral:span",					res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/0/@type").asText());
-        assertEquals("t",							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/0/key").asText());
-        assertEquals("koral:reference",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/@type").asText());
-        assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operation").asText());
-        assertEquals(0,								res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/spanRef/0").asInt());
-        assertEquals(1,								res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/spanRef/1").asInt());
-        assertEquals("koral:group",					res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/@type").asText());
-        assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/operation").asText());
-        assertEquals(131,  							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/classOut").asInt());
-        assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/operands/0/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(129, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:matches", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("koral:group", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/0/operation").asText());
+        assertEquals("frames:startsWith",
+                res.at("/query/operands/0/operands/0/frames/0").asText());
+        assertEquals("koral:span",
+                res.at("/query/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/operands/0/key")
+                .asText());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(129,
+                res.at("/query/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("koral:reference",
+                res.at("/query/operands/0/operands/1/@type").asText());
+        assertEquals("operation:focus",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(130, res.at("/query/operands/0/operands/1/classRef/0")
+                .asInt());
+        assertEquals("koral:group",
+                res.at("/query/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals("operation:position",
+                res.at("/query/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals("frames:matches",
+                res.at("/query/operands/0/operands/1/operands/0/frames/0")
+                        .asText());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "operation:position",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "frames:startsWith",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/frames/0")
+                        .asText());
+        assertEquals(
+                true,
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/exclude")
+                        .asBoolean());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "p",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/key")
+                        .asText());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(
+                130,
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/@type")
+                        .asText());
+        assertEquals(
+                "operation:position",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(
+                "frames:matches",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/frames/0")
+                        .asText());
+        assertEquals(
+                "koral:reference",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "operation:focus",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                -1,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/spanRef/0")
+                        .asInt());
+        assertEquals(
+                1,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/spanRef/1")
+                        .asInt());
+        assertEquals(
+                "koral:span",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "t",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/0/key")
+                        .asText());
+        assertEquals(
+                "koral:reference",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/@type")
+                        .asText());
+        assertEquals(
+                "operation:focus",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operation")
+                        .asText());
+        assertEquals(
+                0,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/spanRef/0")
+                        .asInt());
+        assertEquals(
+                1,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/spanRef/1")
+                        .asInt());
+        assertEquals(
+                "koral:group",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/@type")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                131,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/classOut")
+                        .asInt());
+        assertEquals(
+                "der",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/operands/0/wrap/key")
+                        .asText());
     }
 
+
     @Test
-    public void testErrors() throws JsonProcessingException, IOException {
+    public void testErrors () throws JsonProcessingException, IOException {
         query = "MORPH(tt/p=\"\")";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(true,         res.at("/query/@type").isMissingNode());
-        assertEquals(StatusCodes.INCOMPATIBLE_OPERATOR_AND_OPERAND,          res.at("/errors/0/0").asInt());
-        assertTrue(res.at("/errors/0/1").asText().startsWith("Something went wrong parsing the argument in MORPH()"));
+        assertEquals(true, res.at("/query/@type").isMissingNode());
+        assertEquals(StatusCodes.INCOMPATIBLE_OPERATOR_AND_OPERAND,
+                res.at("/errors/0/0").asInt());
+        assertTrue(res
+                .at("/errors/0/1")
+                .asText()
+                .startsWith(
+                        "Something went wrong parsing the argument in MORPH()"));
 
         query = "MORPH(tt/p=\"foo)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(true,         res.at("/query/@type").isMissingNode());
-        assertEquals(StatusCodes.MALFORMED_QUERY,          res.at("/errors/0/0").asInt());
-        assertTrue(res.at("/errors/0/1").asText().startsWith("Early closing parenthesis"));
+        assertEquals(true, res.at("/query/@type").isMissingNode());
+        assertEquals(StatusCodes.MALFORMED_QUERY, res.at("/errors/0/0").asInt());
+        assertTrue(res.at("/errors/0/1").asText()
+                .startsWith("Early closing parenthesis"));
 
         query = "MORPH(tt/p=)";
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(true,         res.at("/query/@type").isMissingNode());
-        assertEquals(StatusCodes.MALFORMED_QUERY,          res.at("/errors/0/0").asInt());
-        assertTrue(res.at("/errors/0/1").asText().startsWith("Early closing parenthesis"));
+        assertEquals(true, res.at("/query/@type").isMissingNode());
+        assertEquals(StatusCodes.MALFORMED_QUERY, res.at("/errors/0/0").asInt());
+        assertTrue(res.at("/errors/0/1").asText()
+                .startsWith("Early closing parenthesis"));
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessorTest.java
index 92cf788..6f2bdd9 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessorTest.java
@@ -1,4 +1,5 @@
 package de.ids_mannheim.korap.query.serialize;
+
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
@@ -14,187 +15,206 @@
 
 
 public class CqlQueryProcessorTest {
-	
-	String query;
-	String version ="1.2";
-	ObjectMapper mapper = new ObjectMapper();
-	
-	@Test
-	public void testExceptions() throws CQLParseException, IOException {
-		query = "(Kuh) prox (Germ) ";
-		try {
-			CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
-		} catch (Exception e) {
-			int errorCode = Integer.parseInt(e.getMessage().split(":")[0].replace("SRU diagnostic ", ""));
-			assertEquals(48,errorCode);
-		}
-		
-		query = "(Kuh) or/rel.combine=sum (Germ) ";		
-		try {
-			CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
-		}catch (Exception e) {			
-			int errorCode = Integer.parseInt(e.getMessage().split(":")[0].replace("SRU diagnostic ", ""));
-			assertEquals(20,errorCode);
-		}
-		
-		query = "dc.title any Germ ";
-		try {
-			CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
-		} catch (Exception e) {
-			int errorCode = Integer.parseInt(e.getMessage().split(":")[0].replace("SRU diagnostic ", ""));
-			assertEquals(16,errorCode);
-		}
-		
-		query = "cql.serverChoice any Germ ";
-		try {
-			CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
-		} catch (Exception e) {
-			int errorCode = Integer.parseInt(e.getMessage().split(":")[0].replace("SRU diagnostic ", ""));
-			assertEquals(19,errorCode);
-		}
-		
-		query = "";
-		try {
-			CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
-		} catch (Exception e) {
-			int errorCode = Integer.parseInt(e.getMessage().split(":")[0].replace("SRU diagnostic ", ""));
-			assertEquals(27,errorCode);
-		}
-	}
-	
-	@Test
-	public void testAndQuery() throws CQLParseException, IOException, Exception{
-		query="(Sonne) and (scheint)";	
-		String jsonLd = 
-			"{@type : koral:group, operation : operation:sequence, inOrder : false," +		
-			"distances:[ "+
-				"{@type : koral:distance, key : s, min : 0, max : 0 } ],"+
-					"operands : ["+
-						"{@type : koral:token, wrap : {@type : koral:term,key : Sonne, layer : orth, match : match:eq}}," + 
-						"{@type : koral:token,wrap : {@type : koral:term,key : scheint,layer : orth,match : match:eq}" +
-					"}]}";
-			
-			CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);		
-			String serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-			assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-//			/System.out.println(serializedQuery);
-		//CosmasTree ct = new CosmasTree("Sonne und scheint");
-		//serializedQuery = mapper.writeValueAsString(ct.getRequestMap().get("query"));
-		//assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-	}
-	
-	@Test
-	public void testBooleanQuery() throws CQLParseException, IOException, Exception{		
-		query="((Sonne) or (Mond)) and (scheint)";		
-		String jsonLd = 
-			"{@type:koral:group, operation:operation:sequence, inOrder : false, distances:[" +
-				"{@type:koral:distance, key:s, min:0, max:0}" +
-				"], operands:[" +
-					"{@type:koral:group, operation:operation:or, operands:[" +
-						"{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}," +
-						"{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}" +
-					"]}," +
-					"{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}" +
-			"]}";
-		CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);		
-		String serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-		
-		
-		query="(scheint) and ((Sonne) or (Mond))";
-		jsonLd = 
-				"{@type:koral:group, operation:operation:sequence, inOrder : false, distances:[" +
-						"{@type:koral:distance, key:s, min:0, max:0}" +
-					"], operands:[" +
-						"{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}," +
-						"{@type:koral:group, operation:operation:or, operands:[" +
-							"{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}," +
-							"{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}" +
-					"]}" +
-				"]}";
-		cqlTree = new CqlQueryProcessor(query, version);		
-		serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-		
-	}
-	
-	@Test
-	public void testOrQuery() throws CQLParseException, IOException, Exception{
-		query = "(Sonne) or (Mond)";		
-		String jsonLd = 
-			"{@type:koral:group, operation:operation:or, operands:[" +
-				"{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}," +
-				"{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}" +
-			"]}";		
-		
-		CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);		
-		String serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-		
-		query="(\"Sonne scheint\") or (Mond)";		
-		jsonLd = 
-			"{@type:koral:group, operation:operation:or, operands:[" +
-				"{@type:koral:group, operation:operation:sequence, operands:[" +
-					"{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}," +
-					"{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}" +
-				"]}," +
-				"{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}" +
-			"]}";
-		
-		cqlTree = new CqlQueryProcessor(query, version);		
-		serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-				
-		query="(\"Sonne scheint\") or (\"Mond scheint\")";		
-		jsonLd = 
-			"{@type:koral:group, operation:operation:or, operands:[" +
-					"{@type:koral:group, operation:operation:sequence, operands:[" +
-						"{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}," +
-						"{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}" +
-					"]}," +
-					"{@type:koral:group, operation:operation:sequence, operands:[" +
-						"{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}," +
-						"{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}" +
-					"]}" +
-				"]}";
-		cqlTree = new CqlQueryProcessor(query, version);		
-		serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-	}
-	
-	@Test
-	public void testTermQuery() throws CQLParseException, IOException, Exception{
-		query = "Sonne";		
-		String jsonLd = "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}";		
-		CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);		
-		String serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));		
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-	}
-	
-	@Test
-	public void testPhraseQuery() throws CQLParseException, IOException, Exception{
-		query="\"der Mann\"";				
-		String jsonLd = 
-			"{@type:koral:group, operation:operation:sequence, operands:[" +
-				"{@type:koral:token, wrap:{@type:koral:term, key:der, layer:orth, match:match:eq}}," +
-				"{@type:koral:token, wrap:{@type:koral:term, key:Mann, layer:orth, match:match:eq}}" +
-			"]}";
-		
-		CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);		
-		String serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-		
-		
-		query="der Mann schläft";
-		jsonLd = 
-			"{@type:koral:group, operation:operation:sequence, operands:[" +
-				"{@type:koral:token, wrap:{@type:koral:term, key:der, layer:orth, match:match:eq}}," +
-				"{@type:koral:token, wrap:{@type:koral:term, key:Mann, layer:orth, match:match:eq}}," +
-				"{@type:koral:token, wrap:{@type:koral:term, key:schläft, layer:orth, match:match:eq}}" +
-			"]}";
-		
-		cqlTree = new CqlQueryProcessor(query, version);		
-		serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap().get("query"));
-		assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
-	}	
+
+    String query;
+    String version = "1.2";
+    ObjectMapper mapper = new ObjectMapper();
+
+
+    @Test
+    public void testExceptions () throws CQLParseException, IOException {
+        query = "(Kuh) prox (Germ) ";
+        try {
+            CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        }
+        catch (Exception e) {
+            int errorCode = Integer.parseInt(e.getMessage().split(":")[0]
+                    .replace("SRU diagnostic ", ""));
+            assertEquals(48, errorCode);
+        }
+
+        query = "(Kuh) or/rel.combine=sum (Germ) ";
+        try {
+            CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        }
+        catch (Exception e) {
+            int errorCode = Integer.parseInt(e.getMessage().split(":")[0]
+                    .replace("SRU diagnostic ", ""));
+            assertEquals(20, errorCode);
+        }
+
+        query = "dc.title any Germ ";
+        try {
+            CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        }
+        catch (Exception e) {
+            int errorCode = Integer.parseInt(e.getMessage().split(":")[0]
+                    .replace("SRU diagnostic ", ""));
+            assertEquals(16, errorCode);
+        }
+
+        query = "cql.serverChoice any Germ ";
+        try {
+            CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        }
+        catch (Exception e) {
+            int errorCode = Integer.parseInt(e.getMessage().split(":")[0]
+                    .replace("SRU diagnostic ", ""));
+            assertEquals(19, errorCode);
+        }
+
+        query = "";
+        try {
+            CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        }
+        catch (Exception e) {
+            int errorCode = Integer.parseInt(e.getMessage().split(":")[0]
+                    .replace("SRU diagnostic ", ""));
+            assertEquals(27, errorCode);
+        }
+    }
+
+
+    @Test
+    public void testAndQuery () throws CQLParseException, IOException,
+            Exception {
+        query = "(Sonne) and (scheint)";
+        String jsonLd = "{@type : koral:group, operation : operation:sequence, inOrder : false,"
+                + "distances:[ "
+                + "{@type : koral:distance, key : s, min : 0, max : 0 } ],"
+                + "operands : ["
+                + "{@type : koral:token, wrap : {@type : koral:term,key : Sonne, layer : orth, match : match:eq}},"
+                + "{@type : koral:token,wrap : {@type : koral:term,key : scheint,layer : orth,match : match:eq}"
+                + "}]}";
+
+        CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        String serializedQuery = mapper.writeValueAsString(cqlTree
+                .getRequestMap().get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+        //			/System.out.println(serializedQuery);
+        //CosmasTree ct = new CosmasTree("Sonne und scheint");
+        //serializedQuery = mapper.writeValueAsString(ct.getRequestMap().get("query"));
+        //assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+    }
+
+
+    @Test
+    public void testBooleanQuery () throws CQLParseException, IOException,
+            Exception {
+        query = "((Sonne) or (Mond)) and (scheint)";
+        String jsonLd = "{@type:koral:group, operation:operation:sequence, inOrder : false, distances:["
+                + "{@type:koral:distance, key:s, min:0, max:0}"
+                + "], operands:["
+                + "{@type:koral:group, operation:operation:or, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}"
+                + "]},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}"
+                + "]}";
+        CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        String serializedQuery = mapper.writeValueAsString(cqlTree
+                .getRequestMap().get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+
+
+        query = "(scheint) and ((Sonne) or (Mond))";
+        jsonLd = "{@type:koral:group, operation:operation:sequence, inOrder : false, distances:["
+                + "{@type:koral:distance, key:s, min:0, max:0}"
+                + "], operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}},"
+                + "{@type:koral:group, operation:operation:or, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}"
+                + "]}" + "]}";
+        cqlTree = new CqlQueryProcessor(query, version);
+        serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap()
+                .get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+
+    }
+
+
+    @Test
+    public void testOrQuery () throws CQLParseException, IOException, Exception {
+        query = "(Sonne) or (Mond)";
+        String jsonLd = "{@type:koral:group, operation:operation:or, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}"
+                + "]}";
+
+        CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        String serializedQuery = mapper.writeValueAsString(cqlTree
+                .getRequestMap().get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+
+        query = "(\"Sonne scheint\") or (Mond)";
+        jsonLd = "{@type:koral:group, operation:operation:or, operands:["
+                + "{@type:koral:group, operation:operation:sequence, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}"
+                + "]},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}}"
+                + "]}";
+
+        cqlTree = new CqlQueryProcessor(query, version);
+        serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap()
+                .get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+
+        query = "(\"Sonne scheint\") or (\"Mond scheint\")";
+        jsonLd = "{@type:koral:group, operation:operation:or, operands:["
+                + "{@type:koral:group, operation:operation:sequence, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}"
+                + "]},"
+                + "{@type:koral:group, operation:operation:sequence, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mond, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:scheint, layer:orth, match:match:eq}}"
+                + "]}" + "]}";
+        cqlTree = new CqlQueryProcessor(query, version);
+        serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap()
+                .get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+    }
+
+
+    @Test
+    public void testTermQuery () throws CQLParseException, IOException,
+            Exception {
+        query = "Sonne";
+        String jsonLd = "{@type:koral:token, wrap:{@type:koral:term, key:Sonne, layer:orth, match:match:eq}}";
+        CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        String serializedQuery = mapper.writeValueAsString(cqlTree
+                .getRequestMap().get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+    }
+
+
+    @Test
+    public void testPhraseQuery () throws CQLParseException, IOException,
+            Exception {
+        query = "\"der Mann\"";
+        String jsonLd = "{@type:koral:group, operation:operation:sequence, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:der, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mann, layer:orth, match:match:eq}}"
+                + "]}";
+
+        CqlQueryProcessor cqlTree = new CqlQueryProcessor(query, version);
+        String serializedQuery = mapper.writeValueAsString(cqlTree
+                .getRequestMap().get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+
+
+        query = "der Mann schläft";
+        jsonLd = "{@type:koral:group, operation:operation:sequence, operands:["
+                + "{@type:koral:token, wrap:{@type:koral:term, key:der, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:Mann, layer:orth, match:match:eq}},"
+                + "{@type:koral:token, wrap:{@type:koral:term, key:schläft, layer:orth, match:match:eq}}"
+                + "]}";
+
+        cqlTree = new CqlQueryProcessor(query, version);
+        serializedQuery = mapper.writeValueAsString(cqlTree.getRequestMap()
+                .get("query"));
+        assertEquals(jsonLd.replace(" ", ""), serializedQuery.replace("\"", ""));
+    }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
index b7858af..344e78c 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
@@ -1,4 +1,5 @@
 package de.ids_mannheim.korap.query.serialize;
+
 import static org.junit.Assert.*;
 
 import java.io.IOException;
@@ -11,11 +12,11 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Lists;
 
-
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
 
 /**
- * Tests for JSON-LD serialization of PoliqarpPlus queries. 
+ * Tests for JSON-LD serialization of PoliqarpPlus queries.
+ * 
  * @author Joachim Bingel (bingel@ids-mannheim.de)
  * @version 1.0
  */
@@ -28,8 +29,9 @@
     ObjectMapper mapper = new ObjectMapper();
     JsonNode res;
 
+
     @Test
-    public void testContext() throws JsonProcessingException, IOException {
+    public void testContext () throws JsonProcessingException, IOException {
         query = "foo";
         String contextString = "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld";
         qs.setQuery(query, "poliqarpplus");
@@ -37,1383 +39,1679 @@
         assertEquals(contextString, res.get("@context").asText());
     }
 
+
     @Test
-    public void testSingleTokens() throws JsonProcessingException, IOException {
+    public void testSingleTokens () throws JsonProcessingException, IOException {
         query = "[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("Mann", 				res.at("/query/wrap/key").asText());
-        assertEquals("lemma", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("Mann", res.at("/query/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "[orth!=Frau]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("Frau", 				res.at("/query/wrap/key").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("Frau", res.at("/query/wrap/key").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
 
         query = "[p!=NN]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("NN", 					res.at("/query/wrap/key").asText());
-        assertEquals("p", 					res.at("/query/wrap/layer").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("NN", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
 
         query = "[!p!=NN]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("NN", 					res.at("/query/wrap/key").asText());
-        assertEquals("p", 					res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("NN", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "[base=schland/x]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals(".*?schland.*?",		res.at("/query/wrap/key").asText());
-        assertEquals("lemma", 				res.at("/query/wrap/layer").asText());
-        assertEquals("type:regex",			res.at("/query/wrap/type").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals(".*?schland.*?", res.at("/query/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/wrap/layer").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
     }
 
+
     @Test
-    public void testNegatedTokens() throws JsonProcessingException, IOException {
+    public void testNegatedTokens () throws JsonProcessingException,
+            IOException {
         query = "![p!=NN]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",         res.at("/query/@type").asText());
-        assertEquals("NN",                  res.at("/query/wrap/key").asText());
-        assertEquals("p",                   res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",            res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("NN", res.at("/query/wrap/key").asText());
+        assertEquals("p", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
     }
-    
+
+
     @Test
-    public void testValue() throws JsonProcessingException, IOException {
+    public void testValue () throws JsonProcessingException, IOException {
         query = "[mate/m=temp:pres]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals("temp",				res.at("/query/wrap/key").asText());
-        assertEquals("pres",				res.at("/query/wrap/value").asText());
-        assertEquals("m",	 				res.at("/query/wrap/layer").asText());
-        assertEquals("mate", 				res.at("/query/wrap/foundry").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("temp", res.at("/query/wrap/key").asText());
+        assertEquals("pres", res.at("/query/wrap/value").asText());
+        assertEquals("m", res.at("/query/wrap/layer").asText());
+        assertEquals("mate", res.at("/query/wrap/foundry").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
     }
 
+
     @Test
-    public void testRegex() throws JsonProcessingException, IOException {
+    public void testRegex () throws JsonProcessingException, IOException {
         query = "[orth=\"M(a|ä)nn(er)?\"]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals("M(a|ä)nn(er)?",		res.at("/query/wrap/key").asText());
-        assertEquals("type:regex",			res.at("/query/wrap/type").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("M(a|ä)nn(er)?", res.at("/query/wrap/key").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "[orth=\"M(a|ä)nn(er)?\"/x]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals(".*?M(a|ä)nn(er)?.*?",	res.at("/query/wrap/key").asText());
-        assertEquals("type:regex",			res.at("/query/wrap/type").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals(".*?M(a|ä)nn(er)?.*?", res.at("/query/wrap/key").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "\".*?Mann.*?\"";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals(".*?Mann.*?",			res.at("/query/wrap/key").asText());
-        assertEquals("type:regex",			res.at("/query/wrap/type").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals(".*?Mann.*?", res.at("/query/wrap/key").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "z.B./x";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals(".*?z\\.B\\..*?",		res.at("/query/wrap/key").asText());
-        assertEquals("type:regex",			res.at("/query/wrap/type").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals(".*?z\\.B\\..*?", res.at("/query/wrap/key").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
     }
 
+
     @Test
-    public void testPunct() throws JsonProcessingException, IOException {
+    public void testPunct () throws JsonProcessingException, IOException {
         query = "[punct=.]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",         res.at("/query/@type").asText());
-        assertEquals("koral:term",          res.at("/query/wrap/@type").asText());
-        assertEquals(".",                   res.at("/query/wrap/key").asText());
-        assertEquals("type:punct",          res.at("/query/wrap/type").asText());
-        assertEquals("orth",                res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",            res.at("/query/wrap/match").asText());
-        
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals(".", res.at("/query/wrap/key").asText());
+        assertEquals("type:punct", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
+
         query = "[punct=\".\"]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",         res.at("/query/@type").asText());
-        assertEquals("koral:term",          res.at("/query/wrap/@type").asText());
-        assertEquals(".",                   res.at("/query/wrap/key").asText());
-        assertEquals("type:punct",          res.at("/query/wrap/type").asText());
-        assertEquals("orth",                res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",            res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals(".", res.at("/query/wrap/key").asText());
+        assertEquals("type:punct", res.at("/query/wrap/type").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
     }
 
+
     @Test
-    public void testCaseSensitivityFlag() throws JsonProcessingException, IOException {
+    public void testCaseSensitivityFlag () throws JsonProcessingException,
+            IOException {
         query = "[orth=deutscher/i]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals("deutscher",			res.at("/query/wrap/key").asText());
-        assertEquals(true,  				res.at("/query/wrap/flags:caseInsensitive").isMissingNode());
-        assertEquals("flags:caseInsensitive",     res.at("/query/wrap/flags/0").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("deutscher", res.at("/query/wrap/key").asText());
+        assertEquals(true, res.at("/query/wrap/flags:caseInsensitive")
+                .isMissingNode());
+        assertEquals("flags:caseInsensitive", res.at("/query/wrap/flags/0")
+                .asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "deutscher/i";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals("deutscher",			res.at("/query/wrap/key").asText());
-        assertEquals("flags:caseInsensitive",     res.at("/query/wrap/flags/0").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("deutscher", res.at("/query/wrap/key").asText());
+        assertEquals("flags:caseInsensitive", res.at("/query/wrap/flags/0")
+                .asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "deutscher/I";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals("deutscher",			res.at("/query/wrap/key").asText());
-        assertEquals(true,                  res.at("/query/wrap/flags/0").isMissingNode());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("deutscher", res.at("/query/wrap/key").asText());
+        assertEquals(true, res.at("/query/wrap/flags/0").isMissingNode());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "[orth=deutscher/i][orth=Bundestag]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("deutscher",			operands.get(0).at("/wrap/key").asText());
-        assertEquals("orth",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("flags:caseInsensitive",     operands.get(0).at("/wrap/flags/0").asText());
-        assertEquals("koral:token",			operands.get(1).at("/@type").asText());
-        assertEquals("Bundestag",			operands.get(1).at("/wrap/key").asText());
-        assertEquals("orth",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
-        assertEquals(true,					operands.get(1).at("/wrap/flags/0").isMissingNode());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("deutscher", operands.get(0).at("/wrap/key").asText());
+        assertEquals("orth", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("flags:caseInsensitive",
+                operands.get(0).at("/wrap/flags/0").asText());
+        assertEquals("koral:token", operands.get(1).at("/@type").asText());
+        assertEquals("Bundestag", operands.get(1).at("/wrap/key").asText());
+        assertEquals("orth", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
+        assertEquals(true, operands.get(1).at("/wrap/flags/0").isMissingNode());
 
         query = "deutscher/i Bundestag";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("deutscher",			operands.get(0).at("/wrap/key").asText());
-        assertEquals("orth",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("flags:caseInsensitive",     operands.get(0).at("/wrap/flags/0").asText());
-        assertEquals("koral:token",			operands.get(1).at("/@type").asText());
-        assertEquals("Bundestag",			operands.get(1).at("/wrap/key").asText());
-        assertEquals("orth",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
-        assertEquals(true,					operands.get(1).at("/wrap/flags:caseInsensitive").isMissingNode());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("deutscher", operands.get(0).at("/wrap/key").asText());
+        assertEquals("orth", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("flags:caseInsensitive",
+                operands.get(0).at("/wrap/flags/0").asText());
+        assertEquals("koral:token", operands.get(1).at("/@type").asText());
+        assertEquals("Bundestag", operands.get(1).at("/wrap/key").asText());
+        assertEquals("orth", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
+        assertEquals(true, operands.get(1).at("/wrap/flags:caseInsensitive")
+                .isMissingNode());
     }
 
+
     @Test
-    public void testSpans() throws JsonProcessingException, IOException {
+    public void testSpans () throws JsonProcessingException, IOException {
         query = "<s>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("s",					res.at("/query/wrap/key").asText());
-        
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("s", res.at("/query/wrap/key").asText());
+
         query = "<\".*\">";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span",          res.at("/query/@type").asText());
-        assertEquals(".*",                  res.at("/query/wrap/key").asText());
-        assertEquals("type:regex",          res.at("/query/wrap/type").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals(".*", res.at("/query/wrap/key").asText());
+        assertEquals("type:regex", res.at("/query/wrap/type").asText());
 
         query = "<vp>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("vp",					res.at("/query/wrap/key").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("vp", res.at("/query/wrap/key").asText());
 
         query = "<cnx/c=vp>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("vp",					res.at("/query/wrap/key").asText());
-        assertEquals("cnx",					res.at("/query/wrap/foundry").asText());
-        assertEquals("c",					res.at("/query/wrap/layer").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("vp", res.at("/query/wrap/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
 
         query = "<cnx/c!=vp>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("vp",					res.at("/query/wrap/key").asText());
-        assertEquals("cnx",					res.at("/query/wrap/foundry").asText());
-        assertEquals("c",					res.at("/query/wrap/layer").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("vp", res.at("/query/wrap/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
 
         query = "<cnx/c!=vp class!=header>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("vp",					res.at("/query/wrap/key").asText());
-        assertEquals("cnx",					res.at("/query/wrap/foundry").asText());
-        assertEquals("c",					res.at("/query/wrap/layer").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/match").asText());
-        assertEquals("class",				res.at("/query/attr/key").asText());
-        assertEquals("header",				res.at("/query/attr/value").asText());
-        assertEquals("match:ne",			res.at("/query/attr/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("vp", res.at("/query/wrap/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
+        assertEquals("class", res.at("/query/attr/key").asText());
+        assertEquals("header", res.at("/query/attr/value").asText());
+        assertEquals("match:ne", res.at("/query/attr/match").asText());
 
         query = "<cnx/c!=vp !(class!=header)>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("vp",					res.at("/query/wrap/key").asText());
-        assertEquals("cnx",					res.at("/query/wrap/foundry").asText());
-        assertEquals("c",					res.at("/query/wrap/layer").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/match").asText());
-        assertEquals("class",				res.at("/query/attr/key").asText());
-        assertEquals("header",				res.at("/query/attr/value").asText());
-        assertEquals("match:eq",			res.at("/query/attr/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("vp", res.at("/query/wrap/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
+        assertEquals("class", res.at("/query/attr/key").asText());
+        assertEquals("header", res.at("/query/attr/value").asText());
+        assertEquals("match:eq", res.at("/query/attr/match").asText());
 
         query = "<cnx/c!=vp !(class=header & id=7)>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/@type").asText());
-        assertEquals("vp",					res.at("/query/wrap/key").asText());
-        assertEquals("cnx",					res.at("/query/wrap/foundry").asText());
-        assertEquals("c",					res.at("/query/wrap/layer").asText());
-        assertEquals("match:ne",			res.at("/query/wrap/match").asText());
-        assertEquals("koral:termGroup",		res.at("/query/attr/@type").asText());
-        assertEquals("relation:and",		res.at("/query/attr/relation").asText());
-        operands = Lists.newArrayList( res.at("/query/attr/operands").elements());
-        assertEquals("koral:term",			operands.get(0).at("/@type").asText());
-        assertEquals("class",				operands.get(0).at("/key").asText());
-        assertEquals("header",				operands.get(0).at("/value").asText());
-        assertEquals("match:ne",			operands.get(0).at("/match").asText());
-        assertEquals("koral:term",			operands.get(1).at("/@type").asText());
-        assertEquals("id",					operands.get(1).at("/key").asText());
-        assertEquals(7,						operands.get(1).at("/value").asInt());
-        assertEquals("match:ne",			operands.get(1).at("/match").asText());
+        assertEquals("koral:span", res.at("/query/@type").asText());
+        assertEquals("vp", res.at("/query/wrap/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("match:ne", res.at("/query/wrap/match").asText());
+        assertEquals("koral:termGroup", res.at("/query/attr/@type").asText());
+        assertEquals("relation:and", res.at("/query/attr/relation").asText());
+        operands = Lists
+                .newArrayList(res.at("/query/attr/operands").elements());
+        assertEquals("koral:term", operands.get(0).at("/@type").asText());
+        assertEquals("class", operands.get(0).at("/key").asText());
+        assertEquals("header", operands.get(0).at("/value").asText());
+        assertEquals("match:ne", operands.get(0).at("/match").asText());
+        assertEquals("koral:term", operands.get(1).at("/@type").asText());
+        assertEquals("id", operands.get(1).at("/key").asText());
+        assertEquals(7, operands.get(1).at("/value").asInt());
+        assertEquals("match:ne", operands.get(1).at("/match").asText());
     }
 
+
     @Test
-    public void testDistances() throws JsonProcessingException, IOException {
+    public void testDistances () throws JsonProcessingException, IOException {
         query = "[base=der][][base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("true",				res.at("/query/inOrder").asText());
-        assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
-        assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("true", res.at("/query/inOrder").asText());
+        assertEquals("koral:distance", res.at("/query/distances").elements()
+                .next().at("/@type").asText());
+        assertEquals("w",
+                res.at("/query/distances").elements().next().at("/key")
+                        .asText());
+        assertEquals("koral:boundary", res.at("/query/distances").elements()
+                .next().at("/boundary/@type").asText());
+        assertEquals(1,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(1,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:token",			operands.get(1).at("/@type").asText());
-        assertEquals("Mann",				operands.get(1).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(1).at("/@type").asText());
+        assertEquals("Mann", operands.get(1).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
 
         query = "[base=der][][][base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("true",				res.at("/query/inOrder").asText());
-        assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
-        assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("true", res.at("/query/inOrder").asText());
+        assertEquals("koral:distance", res.at("/query/distances").elements()
+                .next().at("/@type").asText());
+        assertEquals("w",
+                res.at("/query/distances").elements().next().at("/key")
+                        .asText());
+        assertEquals("koral:boundary", res.at("/query/distances").elements()
+                .next().at("/boundary/@type").asText());
+        assertEquals(2,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(2,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:token",			operands.get(1).at("/@type").asText());
-        assertEquals("Mann",				operands.get(1).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(1).at("/@type").asText());
+        assertEquals("Mann", operands.get(1).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
 
         query = "[base=der][][]?[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("true",				res.at("/query/inOrder").asText());
-        assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
-        assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("true", res.at("/query/inOrder").asText());
+        assertEquals("koral:distance", res.at("/query/distances").elements()
+                .next().at("/@type").asText());
+        assertEquals("w",
+                res.at("/query/distances").elements().next().at("/key")
+                        .asText());
+        assertEquals("koral:boundary", res.at("/query/distances").elements()
+                .next().at("/boundary/@type").asText());
+        assertEquals(1,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(2,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:token",			operands.get(1).at("/@type").asText());
-        assertEquals("Mann",				operands.get(1).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(1).at("/@type").asText());
+        assertEquals("Mann", operands.get(1).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
 
         query = "[base=der][]+[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("true",				res.at("/query/inOrder").asText());
-        assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
-        assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(true,					res.at("/query/distances").elements().next().at("/boundary/max").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("true", res.at("/query/inOrder").asText());
+        assertEquals("koral:distance", res.at("/query/distances").elements()
+                .next().at("/@type").asText());
+        assertEquals("w",
+                res.at("/query/distances").elements().next().at("/key")
+                        .asText());
+        assertEquals("koral:boundary", res.at("/query/distances").elements()
+                .next().at("/boundary/@type").asText());
+        assertEquals(1,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(true,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/max").isMissingNode());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:token",			operands.get(1).at("/@type").asText());
-        assertEquals("Mann",				operands.get(1).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(1).at("/@type").asText());
+        assertEquals("Mann", operands.get(1).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
 
         query = "[base=der][]*[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("true",				res.at("/query/inOrder").asText());
-        assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
-        assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(0,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(true,					res.at("/query/distances").elements().next().at("/boundary/max").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("true", res.at("/query/inOrder").asText());
+        assertEquals("koral:distance", res.at("/query/distances").elements()
+                .next().at("/@type").asText());
+        assertEquals("w",
+                res.at("/query/distances").elements().next().at("/key")
+                        .asText());
+        assertEquals("koral:boundary", res.at("/query/distances").elements()
+                .next().at("/boundary/@type").asText());
+        assertEquals(0,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(true,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/max").isMissingNode());
 
         query = "[base=der][]{2,5}[base=Mann][]?[][base=Frau]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("true",				res.at("/query/inOrder").asText());
-        assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
-        assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(5,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("true", res.at("/query/inOrder").asText());
+        assertEquals("koral:distance", res.at("/query/distances").elements()
+                .next().at("/@type").asText());
+        assertEquals("w",
+                res.at("/query/distances").elements().next().at("/key")
+                        .asText());
+        assertEquals("koral:boundary", res.at("/query/distances").elements()
+                .next().at("/boundary/@type").asText());
+        assertEquals(2,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(5,
+                res.at("/query/distances").elements().next()
+                        .at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:group",			operands.get(1).at("/@type").asText());
-        assertEquals("operation:sequence",	operands.get(1).at("/operation").asText());
-        assertEquals("koral:distance",		operands.get(1).get("distances").elements().next().at("/@type").asText());
-        assertEquals("w",					operands.get(1).get("distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		operands.get(1).get("distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(1,						operands.get(1).get("distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(2,						operands.get(1).get("distances").elements().next().at("/boundary/max").asInt());
-        operands = Lists.newArrayList(operands.get(1).get("operands").elements());
-        assertEquals("Mann",				operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("Frau",				operands.get(1).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(1).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(1).at("/wrap/match").asText());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:group", operands.get(1).at("/@type").asText());
+        assertEquals("operation:sequence", operands.get(1).at("/operation")
+                .asText());
+        assertEquals("koral:distance", operands.get(1).get("distances")
+                .elements().next().at("/@type").asText());
+        assertEquals("w", operands.get(1).get("distances").elements().next()
+                .at("/key").asText());
+        assertEquals("koral:boundary", operands.get(1).get("distances")
+                .elements().next().at("/boundary/@type").asText());
+        assertEquals(
+                1,
+                operands.get(1).get("distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(
+                2,
+                operands.get(1).get("distances").elements().next()
+                        .at("/boundary/max").asInt());
+        operands = Lists.newArrayList(operands.get(1).get("operands")
+                .elements());
+        assertEquals("Mann", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("Frau", operands.get(1).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(1).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(1).at("/wrap/match").asText());
 
         query = "[base=geht][base=der][]*contains(<s>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals(true,					res.at("/query/inOrder").isMissingNode());
-        assertEquals(true,					res.at("/query/distances").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals(true, res.at("/query/inOrder").isMissingNode());
+        assertEquals(true, res.at("/query/distances").isMissingNode());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals("geht",				operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:group",			operands.get(1).at("/@type").asText());
-        assertEquals("operation:sequence",	operands.get(1).at("/operation").asText());
-        assertEquals("koral:distance",		operands.get(1).get("distances").elements().next().at("/@type").asText());
-        assertEquals("w",					operands.get(1).get("distances").elements().next().at("/key").asText());
-        assertEquals("koral:boundary",		operands.get(1).get("distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(0,						operands.get(1).get("distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(true,					operands.get(1).get("distances").elements().next().at("/boundary/max").isMissingNode());
-        operands = Lists.newArrayList(operands.get(1).get("operands").elements());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
-        assertEquals("match:eq",			operands.get(0).at("/wrap/match").asText());
-        assertEquals("koral:group",			operands.get(1).at("/@type").asText());
-        assertEquals("operation:position",	operands.get(1).at("/operation").asText());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals("geht", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:group", operands.get(1).at("/@type").asText());
+        assertEquals("operation:sequence", operands.get(1).at("/operation")
+                .asText());
+        assertEquals("koral:distance", operands.get(1).get("distances")
+                .elements().next().at("/@type").asText());
+        assertEquals("w", operands.get(1).get("distances").elements().next()
+                .at("/key").asText());
+        assertEquals("koral:boundary", operands.get(1).get("distances")
+                .elements().next().at("/boundary/@type").asText());
+        assertEquals(
+                0,
+                operands.get(1).get("distances").elements().next()
+                        .at("/boundary/min").asInt());
+        assertEquals(true, operands.get(1).get("distances").elements().next()
+                .at("/boundary/max").isMissingNode());
+        operands = Lists.newArrayList(operands.get(1).get("operands")
+                .elements());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("lemma", operands.get(0).at("/wrap/layer").asText());
+        assertEquals("match:eq", operands.get(0).at("/wrap/match").asText());
+        assertEquals("koral:group", operands.get(1).at("/@type").asText());
+        assertEquals("operation:position", operands.get(1).at("/operation")
+                .asText());
     }
 
+
     @Test
-    public void testDistancesWithClass() throws JsonProcessingException, IOException {
+    public void testDistancesWithClass () throws JsonProcessingException,
+            IOException {
         query = "[base=der]{[]}[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals(true,					res.at("/query/inOrder").isMissingNode());
-        assertEquals(true,					res.at("/query/distances").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals(true, res.at("/query/inOrder").isMissingNode());
+        assertEquals(true, res.at("/query/distances").isMissingNode());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("der",					operands.get(0).at("/wrap/key").asText());
-        assertEquals("Mann",				operands.get(2).at("/wrap/key").asText());
-        assertEquals("koral:group",			operands.get(1).at("/@type").asText());
-        assertEquals("operation:class",		operands.get(1).at("/operation").asText());
-        assertEquals(1,						operands.get(1).at("/classOut").asInt());
-        operands = Lists.newArrayList(operands.get(1).at("/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals(true,					operands.get(0).at("/wrap").isMissingNode());
-        assertEquals(1,                     res.at("/meta/highlight/0").asInt());
+        assertEquals("der", operands.get(0).at("/wrap/key").asText());
+        assertEquals("Mann", operands.get(2).at("/wrap/key").asText());
+        assertEquals("koral:group", operands.get(1).at("/@type").asText());
+        assertEquals("operation:class", operands.get(1).at("/operation")
+                .asText());
+        assertEquals(1, operands.get(1).at("/classOut").asInt());
+        operands = Lists.newArrayList(operands.get(1).at("/operands")
+                .elements());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals(true, operands.get(0).at("/wrap").isMissingNode());
+        assertEquals(1, res.at("/meta/highlight/0").asInt());
 
         query = "[base=der]{2:[]}[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("operation:class",		operands.get(1).at("/operation").asText());
-        assertEquals(2,						operands.get(1).at("/classOut").asInt());
-        assertEquals(2,                     res.at("/meta/highlight/0").asInt());
+        assertEquals("operation:class", operands.get(1).at("/operation")
+                .asText());
+        assertEquals(2, operands.get(1).at("/classOut").asInt());
+        assertEquals(2, res.at("/meta/highlight/0").asInt());
 
         query = "[base=der]{3:{2:[]}}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("operation:class",		operands.get(1).at("/operation").asText());
-        assertEquals(3,						operands.get(1).at("/classOut").asInt());
-        assertEquals(3,                     res.at("/meta/highlight/0").asInt());
-        assertEquals("operation:class",		operands.get(1).at("/operands/0/operation").asText());
-        assertEquals(2,						operands.get(1).at("/operands/0/classOut").asInt());
-        assertEquals(3,                     res.at("/meta/highlight/0").asInt());
-        assertEquals(2,                     res.at("/meta/highlight/1").asInt());
+        assertEquals("operation:class", operands.get(1).at("/operation")
+                .asText());
+        assertEquals(3, operands.get(1).at("/classOut").asInt());
+        assertEquals(3, res.at("/meta/highlight/0").asInt());
+        assertEquals("operation:class",
+                operands.get(1).at("/operands/0/operation").asText());
+        assertEquals(2, operands.get(1).at("/operands/0/classOut").asInt());
+        assertEquals(3, res.at("/meta/highlight/0").asInt());
+        assertEquals(2, res.at("/meta/highlight/1").asInt());
 
 
         query = "{1:[]}[base=der][base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("operation:class",		operands.get(0).at("/operation").asText());
-        assertEquals(1,						operands.get(0).at("/classOut").asInt());
-        assertEquals(1,                     res.at("/meta/highlight/0").asInt());
+        assertEquals("operation:class", operands.get(0).at("/operation")
+                .asText());
+        assertEquals(1, operands.get(0).at("/classOut").asInt());
+        assertEquals(1, res.at("/meta/highlight/0").asInt());
 
         query = "{1:{2:der} {3:[]} Mann}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals(1,	operands.size());  // class operation may only have one operand (the sequence)
-        operands = Lists.newArrayList(operands.get(0).at("/operands").elements());
-        assertEquals(3,	operands.size());  // the sequence has three operands ("der", "[]" and "Mann")
-        assertEquals(1,                     res.at("/meta/highlight/0").asInt());
-        assertEquals(2,                     res.at("/meta/highlight/1").asInt());
-        assertEquals(3,                     res.at("/meta/highlight/2").asInt());
+        assertEquals(1, operands.size());  // class operation may only have one operand (the sequence)
+        operands = Lists.newArrayList(operands.get(0).at("/operands")
+                .elements());
+        assertEquals(3, operands.size());  // the sequence has three operands ("der", "[]" and "Mann")
+        assertEquals(1, res.at("/meta/highlight/0").asInt());
+        assertEquals(2, res.at("/meta/highlight/1").asInt());
+        assertEquals(3, res.at("/meta/highlight/2").asInt());
     }
 
+
     @Test
-    public void testEmptyTokens() throws JsonProcessingException, IOException {
+    public void testEmptyTokens () throws JsonProcessingException, IOException {
         query = "[]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token",         res.at("/query/@type").asText());
-        assertEquals(true,                  res.at("/query/key").isMissingNode());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals(true, res.at("/query/key").isMissingNode());
 
         query = "contains(<s>, [])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:position",  res.at("/query/operation").asText());
-        assertEquals("frames:isAround",     res.at("/query/frames/0").asText());
-        assertEquals(true,                  res.at("/query/frames/1").isMissingNode());
-        assertEquals("koral:span",          res.at("/query/operands/0/@type").asText());
-        assertEquals("s",                   res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:token",         res.at("/query/operands/1/@type").asText());
-        assertEquals(true,                  res.at("/query/operands/1/key").isMissingNode());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:isAround", res.at("/query/frames/0").asText());
+        assertEquals(true, res.at("/query/frames/1").isMissingNode());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals(true, res.at("/query/operands/1/key").isMissingNode());
 
         query = "contains(<s>, []{3})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("s",                   res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:repetition",res.at("/query/operands/1/operation").asText());
-        assertEquals("koral:token",         res.at("/query/operands/1/operands/0/@type").asText());
-        assertEquals(true,                  res.at("/query/operands/1/operands/0/key").isMissingNode());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:repetition",
+                res.at("/query/operands/1/operation").asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/0/@type").asText());
+        assertEquals(true, res.at("/query/operands/1/operands/0/key")
+                .isMissingNode());
 
         query = "contains(<s>, {1:[]{3}})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("s",                   res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group",         res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:class",     res.at("/query/operands/1/operation").asText());
-        assertEquals("operation:repetition",res.at("/query/operands/1/operands/0/operation").asText());
-        assertEquals("koral:token",         res.at("/query/operands/1/operands/0/operands/0/@type").asText());
-        assertEquals(true,                  res.at("/query/operands/1/operands/0/operands/0/key").isMissingNode());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals("operation:repetition",
+                res.at("/query/operands/1/operands/0/operation").asText());
+        assertEquals("koral:token",
+                res.at("/query/operands/1/operands/0/operands/0/@type")
+                        .asText());
+        assertEquals(true, res
+                .at("/query/operands/1/operands/0/operands/0/key")
+                .isMissingNode());
 
     }
 
+
     @Test
-    public void testLeadingTrailingEmptyTokens() throws JsonProcessingException, IOException {
+    public void testLeadingTrailingEmptyTokens ()
+            throws JsonProcessingException, IOException {
         query = "[][base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals(true,					operands.get(0).at("/key").isMissingNode());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals(true, operands.get(0).at("/key").isMissingNode());
 
         query = "[][][base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
-        assertEquals("koral:group",			operands.get(0).at("/@type").asText());
-        assertEquals("operation:repetition",operands.get(0).at("/operation").asText());
-        assertEquals(2,						operands.get(0).at("/boundary/min").asInt());
-        assertEquals(2,						operands.get(0).at("/boundary/max").asInt());
-        operands = Lists.newArrayList(operands.get(0).at("/operands").elements());
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals(true,					operands.get(0).at("/key").isMissingNode());
+        assertEquals("koral:group", operands.get(0).at("/@type").asText());
+        assertEquals("operation:repetition", operands.get(0).at("/operation")
+                .asText());
+        assertEquals(2, operands.get(0).at("/boundary/min").asInt());
+        assertEquals(2, operands.get(0).at("/boundary/max").asInt());
+        operands = Lists.newArrayList(operands.get(0).at("/operands")
+                .elements());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals(true, operands.get(0).at("/key").isMissingNode());
 
         query = "startswith(<s>, [][base=Mann])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         operands = Lists.newArrayList(res.at("/query/operands"));
         operands = Lists.newArrayList(operands.get(1).at("/operands"));
-        assertEquals("koral:token",			operands.get(0).at("/@type").asText());
-        assertEquals(true,					operands.get(0).at("/key").isMissingNode());
+        assertEquals("koral:token", operands.get(0).at("/@type").asText());
+        assertEquals(true, operands.get(0).at("/key").isMissingNode());
     }
 
+
     @Test
-    public void testRepetition() throws JsonProcessingException, IOException {
+    public void testRepetition () throws JsonProcessingException, IOException {
         query = "der{3}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 			res.at("/query/@type").asText());
-        assertEquals("operation:repetition", 	res.at("/query/operation").asText());
-        assertEquals("der", 					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals(3, 						res.at("/query/boundary/min").asInt());
-        assertEquals(3, 						res.at("/query/boundary/max").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:repetition", res.at("/query/operation")
+                .asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals(3, res.at("/query/boundary/min").asInt());
+        assertEquals(3, res.at("/query/boundary/max").asInt());
 
         query = "der{,3}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(0,			res.at("/query/boundary/min").asInt());
-        assertEquals(3, 		res.at("/query/boundary/max").asInt());
+        assertEquals(0, res.at("/query/boundary/min").asInt());
+        assertEquals(3, res.at("/query/boundary/max").asInt());
 
         query = "der{3,}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 		res.at("/query/boundary/min").asInt());
-        assertEquals(true, 		res.at("/query/boundary/max").isMissingNode());
+        assertEquals(3, res.at("/query/boundary/min").asInt());
+        assertEquals(true, res.at("/query/boundary/max").isMissingNode());
 
         query = "der{3,7}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 		res.at("/query/boundary/min").asInt());
-        assertEquals(7, 		res.at("/query/boundary/max").asInt());
+        assertEquals(3, res.at("/query/boundary/min").asInt());
+        assertEquals(7, res.at("/query/boundary/max").asInt());
 
         query = "der*";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(0, 		res.at("/query/boundary/min").asInt());
-        assertEquals(true, 		res.at("/query/boundary/max").isMissingNode());
+        assertEquals(0, res.at("/query/boundary/min").asInt());
+        assertEquals(true, res.at("/query/boundary/max").isMissingNode());
 
         query = "der+";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(1, 		res.at("/query/boundary/min").asInt());
-        assertEquals(true, 		res.at("/query/boundary/max").isMissingNode());
+        assertEquals(1, res.at("/query/boundary/min").asInt());
+        assertEquals(true, res.at("/query/boundary/max").isMissingNode());
     };
 
+
     @Test
-    public void testGroupRepetition() throws JsonProcessingException, IOException {
+    public void testGroupRepetition () throws JsonProcessingException,
+            IOException {
         query = "contains(<s>, (der){3})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:position", 	res.at("/query/operation").asText());
-        assertEquals("koral:span", 			res.at("/query/operands/0/@type").asText());
-        assertEquals("s", 					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:repetition",res.at("/query/operands/1/operation").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:repetition",
+                res.at("/query/operands/1/operation").asText());
 
         query = "contains(<s>, (der){3,})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 			res.at("/query/operands/1/boundary/min").asInt());
-        assertEquals(true, 			res.at("/query/operands/1/boundary/max").isMissingNode());
+        assertEquals(3, res.at("/query/operands/1/boundary/min").asInt());
+        assertEquals(true, res.at("/query/operands/1/boundary/max")
+                .isMissingNode());
 
         query = "contains(<s>, (der){,3})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(0, 			res.at("/query/operands/1/boundary/min").asInt());
-        assertEquals(3, 			res.at("/query/operands/1/boundary/max").asInt());
+        assertEquals(0, res.at("/query/operands/1/boundary/min").asInt());
+        assertEquals(3, res.at("/query/operands/1/boundary/max").asInt());
 
         query = "contains(<s>, (der){3,7})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 			res.at("/query/operands/1/boundary/min").asInt());
-        assertEquals(7, 			res.at("/query/operands/1/boundary/max").asInt());
+        assertEquals(3, res.at("/query/operands/1/boundary/min").asInt());
+        assertEquals(7, res.at("/query/operands/1/boundary/max").asInt());
 
         query = "contains(<s>, (der)*)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(0, 			res.at("/query/operands/1/boundary/min").asInt());
-        assertEquals(true, 			res.at("/query/operands/1/boundary/max").isMissingNode());
+        assertEquals(0, res.at("/query/operands/1/boundary/min").asInt());
+        assertEquals(true, res.at("/query/operands/1/boundary/max")
+                .isMissingNode());
     };
 
+
     @Test
-    public void testPositions() throws JsonProcessingException, IOException {
+    public void testPositions () throws JsonProcessingException, IOException {
         query = "contains(<s>, der)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:position", 	res.at("/query/operation").asText());
-        assertEquals("frames:isAround",		res.at("/query/frames/0").asText());
-        assertEquals(true, 					res.at("/query/frames/1").isMissingNode());
-        assertEquals("koral:span", 			res.at("/query/operands/0/@type").asText());
-        assertEquals("s", 					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/1/@type").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:isAround", res.at("/query/frames/0").asText());
+        assertEquals(true, res.at("/query/frames/1").isMissingNode());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
 
         query = "contains(<s>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("s", 		res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("np", 		res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("np", res.at("/query/operands/1/wrap/key").asText());
 
         query = "contains(<s>,[orth=der][orth=Mann])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 			res.at("/query/@type").asText());
-        assertEquals("operation:position", 		res.at("/query/operation").asText());
-        assertEquals("frames:isAround", 		res.at("/query/frames/0").asText());
-        assertEquals("s", 						res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group", 			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:sequence", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("der", 					res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("Mann", 					res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:isAround", res.at("/query/frames/0").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("der", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("Mann", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
         query = "contains(<s>,[orth=der][orth=Mann]*)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 			res.at("/query/@type").asText());
-        assertEquals("operation:position", 		res.at("/query/operation").asText());
-        assertEquals("frames:isAround", 		res.at("/query/frames/0").asText());
-        assertEquals("s", 						res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group", 			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:sequence", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("der", 					res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("operation:repetition", 	res.at("/query/operands/1/operands/1/operation").asText());
-        assertEquals(0, 						res.at("/query/operands/1/operands/1/boundary/min").asInt());
-        assertEquals(true, 						res.at("/query/operands/1/operands/1/boundary/max").isMissingNode());
-        assertEquals("Mann", 					res.at("/query/operands/1/operands/1/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:isAround", res.at("/query/frames/0").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("der", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("operation:repetition",
+                res.at("/query/operands/1/operands/1/operation").asText());
+        assertEquals(0, res.at("/query/operands/1/operands/1/boundary/min")
+                .asInt());
+        assertEquals(true, res.at("/query/operands/1/operands/1/boundary/max")
+                .isMissingNode());
+        assertEquals("Mann",
+                res.at("/query/operands/1/operands/1/operands/0/wrap/key")
+                        .asText());
 
         query = "contains(<s>,startswith(<np>,<pp>))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("s", 						res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group", 			res.at("/query/operands/1/@type").asText());
-        assertEquals("frames:startsWith", 		res.at("/query/operands/1/frames/0").asText());
-        assertEquals("operation:position", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("np", 						res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("pp", 						res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("frames:startsWith", res.at("/query/operands/1/frames/0")
+                .asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("np", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("pp", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
         query = "[base=Auto]overlaps(<s>, der)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 			res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 		res.at("/query/operation").asText());
-        assertEquals("koral:group", 			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:position", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("frames:overlapsLeft", 	res.at("/query/operands/1/frames/0").asText());
-        assertEquals("frames:overlapsRight", 	res.at("/query/operands/1/frames/1").asText());
-        assertEquals("koral:span", 				res.at("/query/operands/1/operands/0/@type").asText());
-        assertEquals("s", 						res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:token", 			res.at("/query/operands/1/operands/1/@type").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("frames:overlapsLeft", res
+                .at("/query/operands/1/frames/0").asText());
+        assertEquals("frames:overlapsRight",
+                res.at("/query/operands/1/frames/1").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/operands/0/@type")
+                .asText());
+        assertEquals("s", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/1/@type").asText());
 
         query = "[base=Auto]            overlaps(<s>, der)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 			res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 		res.at("/query/operation").asText());
-        assertEquals("koral:group", 			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:position", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("frames:overlapsLeft", 	res.at("/query/operands/1/frames/0").asText());
-        assertEquals("frames:overlapsRight", 	res.at("/query/operands/1/frames/1").asText());
-        assertEquals("koral:span", 				res.at("/query/operands/1/operands/0/@type").asText());
-        assertEquals("s", 						res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("koral:token", 			res.at("/query/operands/1/operands/1/@type").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/1/operation").asText());
+        assertEquals("frames:overlapsLeft", res
+                .at("/query/operands/1/frames/0").asText());
+        assertEquals("frames:overlapsRight",
+                res.at("/query/operands/1/frames/1").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/operands/0/@type")
+                .asText());
+        assertEquals("s", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/1/@type").asText());
     };
 
+
     @Test
-    public void testCoordinatedFields() throws JsonProcessingException, IOException {
+    public void testCoordinatedFields () throws JsonProcessingException,
+            IOException {
         query = "[base=Mann&(cas=N|cas=A)]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("relation:and", 		res.at("/query/wrap/relation").asText());
-        assertEquals("Mann", 				res.at("/query/wrap/operands/0/key").asText());
-        assertEquals("lemma", 				res.at("/query/wrap/operands/0/layer").asText());
-        assertEquals("koral:termGroup", 	res.at("/query/wrap/operands/1/@type").asText());
-        assertEquals("relation:or", 		res.at("/query/wrap/operands/1/relation").asText());
-        assertEquals("N", 					res.at("/query/wrap/operands/1/operands/0/key").asText());
-        assertEquals("cas", 				res.at("/query/wrap/operands/1/operands/0/layer").asText());
-        assertEquals("A", 					res.at("/query/wrap/operands/1/operands/1/key").asText());
-        assertEquals("cas", 				res.at("/query/wrap/operands/1/operands/1/layer").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("relation:and", res.at("/query/wrap/relation").asText());
+        assertEquals("Mann", res.at("/query/wrap/operands/0/key").asText());
+        assertEquals("lemma", res.at("/query/wrap/operands/0/layer").asText());
+        assertEquals("koral:termGroup", res.at("/query/wrap/operands/1/@type")
+                .asText());
+        assertEquals("relation:or", res.at("/query/wrap/operands/1/relation")
+                .asText());
+        assertEquals("N", res.at("/query/wrap/operands/1/operands/0/key")
+                .asText());
+        assertEquals("cas", res.at("/query/wrap/operands/1/operands/0/layer")
+                .asText());
+        assertEquals("A", res.at("/query/wrap/operands/1/operands/1/key")
+                .asText());
+        assertEquals("cas", res.at("/query/wrap/operands/1/operands/1/layer")
+                .asText());
 
         query = "[base=Mann&cas=N&gen=m]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("relation:and", 		res.at("/query/wrap/relation").asText());
-        assertEquals("Mann", 				res.at("/query/wrap/operands/0/key").asText());
-        assertEquals("lemma", 				res.at("/query/wrap/operands/0/layer").asText());
-        assertEquals("koral:termGroup", 	res.at("/query/wrap/operands/1/@type").asText());
-        assertEquals("relation:and", 		res.at("/query/wrap/operands/1/relation").asText());
-        assertEquals("N", 					res.at("/query/wrap/operands/1/operands/0/key").asText());
-        assertEquals("cas", 				res.at("/query/wrap/operands/1/operands/0/layer").asText());
-        assertEquals("m", 					res.at("/query/wrap/operands/1/operands/1/key").asText());
-        assertEquals("gen", 				res.at("/query/wrap/operands/1/operands/1/layer").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("relation:and", res.at("/query/wrap/relation").asText());
+        assertEquals("Mann", res.at("/query/wrap/operands/0/key").asText());
+        assertEquals("lemma", res.at("/query/wrap/operands/0/layer").asText());
+        assertEquals("koral:termGroup", res.at("/query/wrap/operands/1/@type")
+                .asText());
+        assertEquals("relation:and", res.at("/query/wrap/operands/1/relation")
+                .asText());
+        assertEquals("N", res.at("/query/wrap/operands/1/operands/0/key")
+                .asText());
+        assertEquals("cas", res.at("/query/wrap/operands/1/operands/0/layer")
+                .asText());
+        assertEquals("m", res.at("/query/wrap/operands/1/operands/1/key")
+                .asText());
+        assertEquals("gen", res.at("/query/wrap/operands/1/operands/1/layer")
+                .asText());
     }
 
+
     @Test
-    public void testTokenSequence() throws JsonProcessingException, IOException {
+    public void testTokenSequence () throws JsonProcessingException,
+            IOException {
         query = "[base=Mann][orth=Frau]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("Mann", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("lemma", 				res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("Frau", 				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("orth", 				res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("Frau", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("orth", res.at("/query/operands/1/wrap/layer").asText());
 
         query = "[base=Mann][orth=Frau][p=NN]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("NN", 					res.at("/query/operands/2/wrap/key").asText());
-        assertEquals("p", 					res.at("/query/operands/2/wrap/layer").asText());
+        assertEquals("NN", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("p", res.at("/query/operands/2/wrap/layer").asText());
 
         query = "[base=Mann][orth=Frau][p=NN][foo=bar]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("bar", 				res.at("/query/operands/3/wrap/key").asText());
-        assertEquals("foo", 				res.at("/query/operands/3/wrap/layer").asText());
+        assertEquals("bar", res.at("/query/operands/3/wrap/key").asText());
+        assertEquals("foo", res.at("/query/operands/3/wrap/layer").asText());
     }
 
+
     @Test
-    public void testDisjSegments() throws JsonProcessingException, IOException {
+    public void testDisjSegments () throws JsonProcessingException, IOException {
         query = "[base=der]|[base=das]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("der", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("lemma", 				res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("das", 				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("lemma", 				res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("das", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/operands/1/wrap/layer").asText());
 
         query = "([base=der]|[base=das])[base=Schild]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("Schild", 				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operands/0/operation").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("Schild", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/0/operation").asText());
 
         query = "[base=Schild]([base=der]|[base=das])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Schild", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operands/1/operation").asText());
+        assertEquals("Schild", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/1/operation").asText());
 
         query = "([orth=der][base=katze])|([orth=eine][base=baum])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("der", 				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("katze",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("eine", 				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("baum", 				res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("katze", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("eine", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("baum", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
         query = "[orth=der][base=katze]|[orth=eine][base=baum]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/0/operands/0/@type").asText());
-        assertEquals("der", 				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("katze", 				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("eine", 				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("baum", 				res.at("/query/operands/1/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/0/operands/0/@type").asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("katze", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("eine", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("baum", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
 
         query = "[orth=der]([base=katze]|[orth=eine])[base=baum]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/2/@type").asText());
-        assertEquals("der", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("katze", 				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("eine", 				res.at("/query/operands/1/operands/1/wrap/key").asText());
-        assertEquals("baum", 				res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/1/operation").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:token", res.at("/query/operands/2/@type").asText());
+        assertEquals("der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("katze", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("eine", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
+        assertEquals("baum", res.at("/query/operands/2/wrap/key").asText());
 
         query = "[orth=der][base=katze]|[orth=der][base=hund]|[orth=der][base=baum]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("der", 				res.at("/query/operands/2/operands/0/wrap/key").asText());
-        assertEquals("baum", 				res.at("/query/operands/2/operands/1/wrap/key").asText());
+        assertEquals("der", res.at("/query/operands/2/operands/0/wrap/key")
+                .asText());
+        assertEquals("baum", res.at("/query/operands/2/operands/1/wrap/key")
+                .asText());
 
         query = "[orth=der]([base=katze]|[base=hund]|[base=baum])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:disjunction", 		res.at("/query/operands/1/operation").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/1/operands/0/@type").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/1/operands/1/@type").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/1/operands/2/@type").asText());
-        assertEquals("katze", 				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("hund", 				res.at("/query/operands/1/operands/1/wrap/key").asText());
-        assertEquals("baum", 				res.at("/query/operands/1/operands/2/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/1/operation").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/0/@type").asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/1/@type").asText());
+        assertEquals("koral:token", res
+                .at("/query/operands/1/operands/2/@type").asText());
+        assertEquals("katze", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("hund", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
+        assertEquals("baum", res.at("/query/operands/1/operands/2/wrap/key")
+                .asText());
     }
 
+
     @Test
-    public void testTokenSpanSequence() throws JsonProcessingException, IOException {
+    public void testTokenSpanSequence () throws JsonProcessingException,
+            IOException {
         query = "[base=Mann]<vp>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("Mann", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:span", 			res.at("/query/operands/1/@type").asText());
-        assertEquals("vp", 					res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
+        assertEquals("vp", res.at("/query/operands/1/wrap/key").asText());
 
         query = "<vp>[base=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("koral:span", 			res.at("/query/operands/0/@type").asText());
-        assertEquals("vp", 					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:token", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("Mann", 				res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
+        assertEquals("vp", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
+        assertEquals("Mann", res.at("/query/operands/1/wrap/key").asText());
 
         query = "<vp>[base=Mann]<pp>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:span", 			res.at("/query/operands/2/@type").asText());
-        assertEquals("pp", 					res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("koral:span", res.at("/query/operands/2/@type").asText());
+        assertEquals("pp", res.at("/query/operands/2/wrap/key").asText());
 
         query = "<vp>[base=Mann]<pp><np>";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("pp", 					res.at("/query/operands/2/wrap/key").asText());
-        assertEquals("np", 					res.at("/query/operands/3/wrap/key").asText());
+        assertEquals("pp", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("np", res.at("/query/operands/3/wrap/key").asText());
     }
 
-    @Test 
-    public void testClasses() throws JsonProcessingException, IOException {
+
+    @Test
+    public void testClasses () throws JsonProcessingException, IOException {
         query = "{[base=Mann]}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:class", 	res.at("/query/operation").asText());
-        assertEquals(1, 					res.at("/query/classOut").asInt());
-        assertEquals(true, 					res.at("/query/classIn").isMissingNode());
-        assertEquals("Mann", 				res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:class", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/classOut").asInt());
+        assertEquals(true, res.at("/query/classIn").isMissingNode());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
 
         query = "{[base=Mann][orth=Frau]}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:class", 	res.at("/query/operation").asText());
-        assertEquals(1, 					res.at("/query/classOut").asInt());
-        assertEquals(true, 					res.at("/query/classIn").isMissingNode());
-        assertEquals("Mann", 				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Frau", 				res.at("/query/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:class", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/classOut").asInt());
+        assertEquals(true, res.at("/query/classIn").isMissingNode());
+        assertEquals("Mann", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Frau", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
 
         query = "{[base=Mann]}{[orth=Frau]}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group",         res.at("/query/@type").asText());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("operation:class",     res.at("/query/operands/0/operation").asText());
-        assertEquals(1,                     res.at("/query/operands/0/classOut").asInt());
-        assertEquals("operation:class",     res.at("/query/operands/1/operation").asText());
-        assertEquals(1,                     res.at("/query/operands/1/classOut").asInt());
-        assertEquals(true,                  res.at("/query/classIn").isMissingNode());
-        assertEquals("Mann",                res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Frau",                res.at("/query/operands/1/operands/0/wrap/key").asText());
-        
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(1, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(1, res.at("/query/operands/1/classOut").asInt());
+        assertEquals(true, res.at("/query/classIn").isMissingNode());
+        assertEquals("Mann", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Frau", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+
         query = "[p=NN]{[base=Mann][orth=Frau]}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/1/operation").asText());
-        assertEquals(1, 					res.at("/query/operands/1/classOut").asInt());
-        assertEquals(true, 					res.at("/query/operands/1/classIn").isMissingNode());
-        assertEquals("Mann", 				res.at("/query/operands/1/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Frau", 				res.at("/query/operands/1/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/1/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(1, res.at("/query/operands/1/classOut").asInt());
+        assertEquals(true, res.at("/query/operands/1/classIn").isMissingNode());
+        assertEquals("Mann",
+                res.at("/query/operands/1/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("Frau",
+                res.at("/query/operands/1/operands/0/operands/1/wrap/key")
+                        .asText());
 
         query = "{[base=Mann][orth=Frau]}[p=NN]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("koral:group", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operation").asText());
-        assertEquals(1, 					res.at("/query/operands/0/classOut").asInt());
-        assertEquals(true, 					res.at("/query/operands/0/classIn").isMissingNode());
-        assertEquals("Mann", 				res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Frau", 				res.at("/query/operands/0/operands/0/operands/1/wrap/key").asText());
-        assertEquals(1,                     res.at("/meta/highlight/0").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:group", res.at("/query/operands/0/@type").asText());
+        assertEquals("operation:class", res.at("/query/operands/0/operation")
+                .asText());
+        assertEquals(1, res.at("/query/operands/0/classOut").asInt());
+        assertEquals(true, res.at("/query/operands/0/classIn").isMissingNode());
+        assertEquals("Mann",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("Frau",
+                res.at("/query/operands/0/operands/0/operands/1/wrap/key")
+                        .asText());
+        assertEquals(1, res.at("/meta/highlight/0").asInt());
 
         query = "{2:{1:[tt/p=ADJA]}[mate/p=NN]}";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:class", 	res.at("/query/operation").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
-        assertEquals(2, 					res.at("/query/classOut").asInt());
-        assertEquals(1, 					res.at("/query/operands/0/operands/0/classOut").asInt());
-        assertEquals(2,                     res.at("/meta/highlight/0").asInt());
-        assertEquals(1,                     res.at("/meta/highlight/1").asInt());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:class", res.at("/query/operation").asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals(2, res.at("/query/classOut").asInt());
+        assertEquals(1, res.at("/query/operands/0/operands/0/classOut").asInt());
+        assertEquals(2, res.at("/meta/highlight/0").asInt());
+        assertEquals(1, res.at("/meta/highlight/1").asInt());
     }
 
+
     @Test
-    public void testFocusSplit() throws JsonProcessingException, IOException {
+    public void testFocusSplit () throws JsonProcessingException, IOException {
         query = "focus([orth=Der]{[orth=Mann]})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:focus", 	res.at("/query/operation").asText());
-        assertEquals(1, 					res.at("/query/classRef/0").asInt());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(1, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("Mann", 				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals(1,                     res.at("/meta/highlight/0").asInt());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/classRef/0").asInt());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(1, res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals("Mann",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals(1, res.at("/meta/highlight/0").asInt());
 
         query = "focus([orth=Der]{[orth=Mann][orth=geht]})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals("Mann", 				res.at("/query/operands/0/operands/1/operands/0/operands/0/wrap/key").asText());
-        assertEquals("geht", 				res.at("/query/operands/0/operands/1/operands/0/operands/1/wrap/key").asText());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "Mann",
+                res.at("/query/operands/0/operands/1/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(
+                "geht",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/wrap/key")
+                        .asText());
 
         query = "focus(2:[orth=Der]{2:[orth=Mann][orth=geht]})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(2, 					res.at("/query/classRef/0").asInt());
-        assertEquals(2, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals(2,                     res.at("/meta/highlight/0").asInt());
+        assertEquals(2, res.at("/query/classRef/0").asInt());
+        assertEquals(2, res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals(2, res.at("/meta/highlight/0").asInt());
 
         query = "focus(3:startswith(<s>,{3:<np>}))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 					res.at("/query/classRef/0").asInt());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:focus", 	res.at("/query/operation").asText());
-        assertEquals("operation:position", 	res.at("/query/operands/0/operation").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(3, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("frames:startsWith", 	res.at("/query/operands/0/frames/0").asText());
-        assertEquals(3,                     res.at("/meta/highlight/0").asInt());
+        assertEquals(3, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(3, res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals("frames:startsWith", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals(3, res.at("/meta/highlight/0").asInt());
 
         query = "focus(1000:startswith(<s>,{1000:<np>}))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(1000, 					res.at("/query/classRef/0").asInt());
-        assertEquals(1000, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals(1000,                  res.at("/meta/highlight/0").asInt());
+        assertEquals(1000, res.at("/query/classRef/0").asInt());
+        assertEquals(1000, res.at("/query/operands/0/operands/1/classOut")
+                .asInt());
+        assertEquals(1000, res.at("/meta/highlight/0").asInt());
 
         query = "focus(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}}))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 					res.at("/query/classRef/0").asInt());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:focus", 	res.at("/query/operation").asText());
-        assertEquals("operation:position", 	res.at("/query/operands/0/operation").asText());
-        assertEquals("frames:startsWith", 	res.at("/query/operands/0/frames/0").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals(3, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operands/0/operands/1/operation").asText());
-        assertEquals(1, 					res.at("/query/operands/0/operands/1/operands/0/operands/1/classOut").asInt());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operation").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/1/operation").asText());
-        assertEquals(2, 					res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/1/classOut").asInt());
+        assertEquals(3, res.at("/query/classRef/0").asInt());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals("operation:position", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("frames:startsWith", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals(3, res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals("operation:sequence",
+                res.at("/query/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(
+                1,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/classOut")
+                        .asInt());
+        assertEquals(
+                "operation:sequence",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operation")
+                        .asText());
+        assertEquals(
+                "operation:class",
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/1/operation")
+                        .asText());
+        assertEquals(
+                2,
+                res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/1/classOut")
+                        .asInt());
 
         query = "split(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}}))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(3, 					res.at("/query/classRef/0").asInt());
-        assertEquals(true, 					res.at("/query/classRef/1").isMissingNode());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:split", 	res.at("/query/operation").asText());
+        assertEquals(3, res.at("/query/classRef/0").asInt());
+        assertEquals(true, res.at("/query/classRef/1").isMissingNode());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:split", res.at("/query/operation").asText());
 
         query = "split(2|3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}}))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(2, 						res.at("/query/classRef/0").asInt());
-        assertEquals(3, 						res.at("/query/classRef/1").asInt());
-        assertEquals("classRefOp:intersection", res.at("/query/classRefOp").asText());
-        assertEquals("koral:reference", 		res.at("/query/@type").asText());
-        assertEquals("operation:split", 		res.at("/query/operation").asText());
-        assertEquals(3,                     res.at("/meta/highlight/0").asInt());
-        assertEquals(1,                     res.at("/meta/highlight/1").asInt());
-        assertEquals(2,                     res.at("/meta/highlight/2").asInt());
+        assertEquals(2, res.at("/query/classRef/0").asInt());
+        assertEquals(3, res.at("/query/classRef/1").asInt());
+        assertEquals("classRefOp:intersection", res.at("/query/classRefOp")
+                .asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:split", res.at("/query/operation").asText());
+        assertEquals(3, res.at("/meta/highlight/0").asInt());
+        assertEquals(1, res.at("/meta/highlight/1").asInt());
+        assertEquals(2, res.at("/meta/highlight/2").asInt());
 
         query = "focus(1:{[base=der]}{1:[pos=ADJA]})";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(1, 					res.at("/query/classRef/0").asInt());
-        assertEquals(1, 					res.at("/query/operands/0/operands/0/classOut").asInt());
-        assertEquals(1, 					res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals(1, res.at("/query/classRef/0").asInt());
+        assertEquals(1, res.at("/query/operands/0/operands/0/classOut").asInt());
+        assertEquals(1, res.at("/query/operands/0/operands/1/classOut").asInt());
     }
 
+
     @Test
-    public void testSubmatch() throws JsonProcessingException, IOException {
+    public void testSubmatch () throws JsonProcessingException, IOException {
         query = "submatch(1:<s>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:focus", 	res.at("/query/operation").asText());
-        assertEquals(1, 					res.at("/query/spanRef/0").asInt());
-        assertEquals(true, 					res.at("/query/spanRef/1").isMissingNode());
-        assertEquals("s", 					res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/spanRef/0").asInt());
+        assertEquals(true, res.at("/query/spanRef/1").isMissingNode());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
 
         query = "submatch(1,4:<s>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:focus", 	res.at("/query/operation").asText());
-        assertEquals(1, 					res.at("/query/spanRef/0").asInt());
-        assertEquals(4, 					res.at("/query/spanRef/1").asInt());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/spanRef/0").asInt());
+        assertEquals(4, res.at("/query/spanRef/1").asInt());
 
         query = "submatch(1,4:contains(<s>,[base=Haus]))";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:reference", 	res.at("/query/@type").asText());
-        assertEquals("operation:focus", 	res.at("/query/operation").asText());
-        assertEquals(1, 					res.at("/query/spanRef/0").asInt());
-        assertEquals(4, 					res.at("/query/spanRef/1").asInt());
-        assertEquals("frames:isAround", 	res.at("/query/operands/0/frames/0").asText());
-        assertEquals("s", 					res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("Haus", 				res.at("/query/operands/0/operands/1/wrap/key").asText());
+        assertEquals("koral:reference", res.at("/query/@type").asText());
+        assertEquals("operation:focus", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/spanRef/0").asInt());
+        assertEquals(4, res.at("/query/spanRef/1").asInt());
+        assertEquals("frames:isAround", res.at("/query/operands/0/frames/0")
+                .asText());
+        assertEquals("s", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("Haus", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
     }
+
+
     @Test
-    public void testRelations() throws JsonProcessingException, IOException {
+    public void testRelations () throws JsonProcessingException, IOException {
         query = "dominates(<s>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:relation", 	res.at("/query/operation").asText());
-        assertEquals("koral:relation", 		res.at("/query/relation/@type").asText());
-        assertEquals("c",                   res.at("/query/relation/wrap/layer").asText());
-        assertEquals("s", 					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("np", 					res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
+        assertEquals("s", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("np", res.at("/query/operands/1/wrap/key").asText());
 
         query = "relatesTo([base=Baum],<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:relation", 	res.at("/query/operation").asText());
-        assertEquals("koral:relation", 		res.at("/query/relation/@type").asText());
-        assertEquals("Baum", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("np", 					res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:relation", res.at("/query/operation").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("Baum", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("np", res.at("/query/operands/1/wrap/key").asText());
 
         query = "relatesTo(Baum,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("orth", 				res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("Baum", 				res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("orth", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("Baum", res.at("/query/operands/0/wrap/key").asText());
 
         query = "relatesTo(mate/d=HEAD:<np>,[base=Baum])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("lemma", 				res.at("/query/operands/1/wrap/layer").asText());
-        assertEquals("Baum", 				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("koral:relation", 		res.at("/query/relation/@type").asText());
-        assertEquals("mate", 				res.at("/query/relation/wrap/foundry").asText());
-        assertEquals("d", 					res.at("/query/relation/wrap/layer").asText());
-        assertEquals("HEAD", 				res.at("/query/relation/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("Baum", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("mate", res.at("/query/relation/wrap/foundry").asText());
+        assertEquals("d", res.at("/query/relation/wrap/layer").asText());
+        assertEquals("HEAD", res.at("/query/relation/wrap/key").asText());
 
         query = "dependency([base=fällen],[base=Baum])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("lemma",               res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("fällen",              res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("lemma",               res.at("/query/operands/1/wrap/layer").asText());
-        assertEquals("Baum",                res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("koral:relation",      res.at("/query/relation/@type").asText());
-        assertEquals("d",                   res.at("/query/relation/wrap/layer").asText());
+        assertEquals("lemma", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("fällen", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("lemma", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("Baum", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("d", res.at("/query/relation/wrap/layer").asText());
 
         query = "dominates(Baum,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("orth", 				res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("Baum", 				res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("koral:relation", 		res.at("/query/relation/@type").asText());
-        assertEquals("c", 					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("orth", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("Baum", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("koral:relation", res.at("/query/relation/@type").asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
 
         query = "dominates(cnx/c:<vp>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("cnx", 				res.at("/query/relation/wrap/foundry").asText());
-        assertEquals("c", 					res.at("/query/relation/wrap/layer").asText());
+        assertEquals("cnx", res.at("/query/relation/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
 
         query = "dominates(cnx/c*:<vp>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("cnx", 				res.at("/query/relation/wrap/foundry").asText());
-        assertEquals("c", 					res.at("/query/relation/wrap/layer").asText());
-        assertEquals(0, 					res.at("/query/relation/boundary/min").asInt());
-        assertEquals(true, 					res.at("/query/relation/boundary/max").isMissingNode());
+        assertEquals("cnx", res.at("/query/relation/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/relation/wrap/layer").asText());
+        assertEquals(0, res.at("/query/relation/boundary/min").asInt());
+        assertEquals(true, res.at("/query/relation/boundary/max")
+                .isMissingNode());
 
         query = "dominates(cnx/c{1,5}:<vp>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(1, 					res.at("/query/relation/boundary/min").asInt());
-        assertEquals(5, 					res.at("/query/relation/boundary/max").asInt());
+        assertEquals(1, res.at("/query/relation/boundary/min").asInt());
+        assertEquals(5, res.at("/query/relation/boundary/max").asInt());
 
         query = "dominates(cnx/c{,5}:<vp>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(0, 					res.at("/query/relation/boundary/min").asInt());
-        assertEquals(5, 					res.at("/query/relation/boundary/max").asInt());
+        assertEquals(0, res.at("/query/relation/boundary/min").asInt());
+        assertEquals(5, res.at("/query/relation/boundary/max").asInt());
 
         query = "dominates(cnx/c{5}:<vp>,<np>)";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals(5, 					res.at("/query/relation/boundary/min").asInt());
-        assertEquals(5, 					res.at("/query/relation/boundary/max").asInt());
+        assertEquals(5, res.at("/query/relation/boundary/min").asInt());
+        assertEquals(5, res.at("/query/relation/boundary/max").asInt());
     }
 
+
     @Test
-    public void testAlign() throws JsonProcessingException, IOException {
+    public void testAlign () throws JsonProcessingException, IOException {
         query = "[orth=der]^[orth=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:sequence", 	res.at("/query/operation").asText());
-        assertEquals("der", 				res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals(1,                     res.at("/query/operands/0/classOut").asInt());
-        assertEquals("Mann",                res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/1/operation").asText());
-        assertEquals(2,   					res.at("/query/operands/1/classOut").asInt());
-        assertEquals(1,   					res.at("/meta/alignment/0/0").asInt());
-        assertEquals(2,                     res.at("/meta/alignment/0/1").asInt());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals(1, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("Mann", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(2, res.at("/query/operands/1/classOut").asInt());
+        assertEquals(1, res.at("/meta/alignment/0/0").asInt());
+        assertEquals(2, res.at("/meta/alignment/0/1").asInt());
 
         query = "[orth=der]^[orth=große][orth=Mann]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:sequence",  res.at("/query/operation").asText());
-        assertEquals("der",                 res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals(1,                     res.at("/query/operands/0/classOut").asInt());
-        assertEquals("große",               res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("operation:class",     res.at("/query/operands/1/operation").asText());
-        assertEquals(2,                     res.at("/query/operands/1/classOut").asInt());
-        assertEquals("Mann",                res.at("/query/operands/2/wrap/key").asText());
-        assertEquals(1,                     res.at("/meta/alignment/0/0").asInt());
-        assertEquals(2,                     res.at("/meta/alignment/0/1").asInt());
-        
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals(1, res.at("/query/operands/0/classOut").asInt());
+        assertEquals("große", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("operation:class", res.at("/query/operands/1/operation")
+                .asText());
+        assertEquals(2, res.at("/query/operands/1/classOut").asInt());
+        assertEquals("Mann", res.at("/query/operands/2/wrap/key").asText());
+        assertEquals(1, res.at("/meta/alignment/0/0").asInt());
+        assertEquals(2, res.at("/meta/alignment/0/1").asInt());
+
 
         query = "([base=a]^[base=b])|[base=c]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
-        assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
-        assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
-        assertEquals("a", 					res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("b", 					res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("c", 					res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(1,                     res.at("/query/operands/0/operands/0/classOut").asInt());
-        assertEquals(2,   					res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals(1,                     res.at("/meta/alignment/0/0").asInt());
-        assertEquals(2,                     res.at("/meta/alignment/0/1").asInt());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("operation:sequence", res
+                .at("/query/operands/0/operation").asText());
+        assertEquals("operation:class",
+                res.at("/query/operands/0/operands/1/operation").asText());
+        assertEquals("a",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("b",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(1, res.at("/query/operands/0/operands/0/classOut").asInt());
+        assertEquals(2, res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals(1, res.at("/meta/alignment/0/0").asInt());
+        assertEquals(2, res.at("/meta/alignment/0/1").asInt());
 
         query = "([base=a]^[base=b][base=c])|[base=d]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("a",                   res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals("b", 					res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals("c", 					res.at("/query/operands/0/operands/2/wrap/key").asText());
-        assertEquals("d", 					res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("a",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals("b",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals("c", res.at("/query/operands/0/operands/2/wrap/key")
+                .asText());
+        assertEquals("d", res.at("/query/operands/1/wrap/key").asText());
 
         query = "([base=a]^[base=b]^[base=c])|[base=d]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("a",                   res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-        assertEquals(1,                     res.at("/query/operands/0/operands/0/classOut").asInt());
-        assertEquals("b",                   res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-        assertEquals(2,                     res.at("/query/operands/0/operands/1/classOut").asInt());
-        assertEquals("c",                   res.at("/query/operands/0/operands/2/operands/0/wrap/key").asText());
-        assertEquals(3,                     res.at("/query/operands/0/operands/2/classOut").asInt());
-        assertEquals("d",                   res.at("/query/operands/1/wrap/key").asText());
-        assertEquals(1,                     res.at("/meta/alignment/0/0").asInt());
-        assertEquals(2,                     res.at("/meta/alignment/0/1").asInt());
-        assertEquals(2,                     res.at("/meta/alignment/1/0").asInt());
-        assertEquals(3,                     res.at("/meta/alignment/1/1").asInt());
-        
+        assertEquals("a",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
+        assertEquals(1, res.at("/query/operands/0/operands/0/classOut").asInt());
+        assertEquals("b",
+                res.at("/query/operands/0/operands/1/operands/0/wrap/key")
+                        .asText());
+        assertEquals(2, res.at("/query/operands/0/operands/1/classOut").asInt());
+        assertEquals("c",
+                res.at("/query/operands/0/operands/2/operands/0/wrap/key")
+                        .asText());
+        assertEquals(3, res.at("/query/operands/0/operands/2/classOut").asInt());
+        assertEquals("d", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(1, res.at("/meta/alignment/0/0").asInt());
+        assertEquals(2, res.at("/meta/alignment/0/1").asInt());
+        assertEquals(2, res.at("/meta/alignment/1/0").asInt());
+        assertEquals(3, res.at("/meta/alignment/1/1").asInt());
+
         query = "^ Mann";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Mann",                res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("operation:class",     res.at("/query/operation").asText());
-        assertEquals(1,                     res.at("/query/classOut").asInt());
-        assertEquals(-1,                    res.at("/meta/alignment/0/0").asInt());
-        assertEquals(1,                     res.at("/meta/alignment/0/1").asInt());
-        
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("operation:class", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/classOut").asInt());
+        assertEquals(-1, res.at("/meta/alignment/0/0").asInt());
+        assertEquals(1, res.at("/meta/alignment/0/1").asInt());
+
         query = "Mann ^";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Mann",                res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("operation:class",     res.at("/query/operation").asText());
-        assertEquals(1,                     res.at("/query/classOut").asInt());
-        assertEquals(1,                     res.at("/meta/alignment/0/0").asInt());
-        assertEquals(-1,                    res.at("/meta/alignment/0/1").asInt());
+        assertEquals("Mann", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("operation:class", res.at("/query/operation").asText());
+        assertEquals(1, res.at("/query/classOut").asInt());
+        assertEquals(1, res.at("/meta/alignment/0/0").asInt());
+        assertEquals(-1, res.at("/meta/alignment/0/1").asInt());
     }
 
+
     @Test
-    public void testSimpleQueries() throws JsonProcessingException, IOException {
+    public void testSimpleQueries () throws JsonProcessingException,
+            IOException {
         query = "Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:token", 		res.at("/query/@type").asText());
-        assertEquals("koral:term",			res.at("/query/wrap/@type").asText());
-        assertEquals("Baum",				res.at("/query/wrap/key").asText());
-        assertEquals("orth", 				res.at("/query/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/wrap/match").asText());
+        assertEquals("koral:token", res.at("/query/@type").asText());
+        assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+        assertEquals("Baum", res.at("/query/wrap/key").asText());
+        assertEquals("orth", res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
 
         query = "Der Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("koral:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:sequence",	res.at("/query/operation").asText());
-        assertEquals("koral:token",			res.at("/query/operands/0/@type").asText());
-        assertEquals("koral:term",			res.at("/query/operands/0/wrap/@type").asText());
-        assertEquals("Der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("Baum",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("orth", 				res.at("/query/operands/0/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/operands/0/wrap/match").asText());
-        assertEquals("orth", 				res.at("/query/operands/1/wrap/layer").asText());
-        assertEquals("match:eq",			res.at("/query/operands/1/wrap/match").asText());
+        assertEquals("koral:group", res.at("/query/@type").asText());
+        assertEquals("operation:sequence", res.at("/query/operation").asText());
+        assertEquals("koral:token", res.at("/query/operands/0/@type").asText());
+        assertEquals("koral:term", res.at("/query/operands/0/wrap/@type")
+                .asText());
+        assertEquals("Der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("Baum", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("orth", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/operands/0/wrap/match")
+                .asText());
+        assertEquals("orth", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("match:eq", res.at("/query/operands/1/wrap/match")
+                .asText());
 
         query = "Der große Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("große",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("Baum",				res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("Der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("große", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("Baum", res.at("/query/operands/2/wrap/key").asText());
 
         query = "Der (große|kleine) Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("operation:disjunction",		res.at("/query/operands/1/operation").asText());
-        assertEquals("große",				res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("kleine",				res.at("/query/operands/1/operands/1/wrap/key").asText());
-        assertEquals("Baum",				res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("Der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("operation:disjunction",
+                res.at("/query/operands/1/operation").asText());
+        assertEquals("große", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("kleine", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
+        assertEquals("Baum", res.at("/query/operands/2/wrap/key").asText());
 
         query = "der große Baum | der kleine Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
-        assertEquals("der",					res.at("/query/operands/0/operands/0/wrap/key").asText());
-        assertEquals("große",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-        assertEquals("Baum",				res.at("/query/operands/0/operands/2/wrap/key").asText());
-        assertEquals("der",					res.at("/query/operands/1/operands/0/wrap/key").asText());
-        assertEquals("kleine",				res.at("/query/operands/1/operands/1/wrap/key").asText());
-        assertEquals("Baum",				res.at("/query/operands/1/operands/2/wrap/key").asText());
+        assertEquals("operation:disjunction", res.at("/query/operation")
+                .asText());
+        assertEquals("der", res.at("/query/operands/0/operands/0/wrap/key")
+                .asText());
+        assertEquals("große", res.at("/query/operands/0/operands/1/wrap/key")
+                .asText());
+        assertEquals("Baum", res.at("/query/operands/0/operands/2/wrap/key")
+                .asText());
+        assertEquals("der", res.at("/query/operands/1/operands/0/wrap/key")
+                .asText());
+        assertEquals("kleine", res.at("/query/operands/1/operands/1/wrap/key")
+                .asText());
+        assertEquals("Baum", res.at("/query/operands/1/operands/2/wrap/key")
+                .asText());
 
         query = "Der [p=ADJA] Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("Der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("ADJA",				res.at("/query/operands/1/wrap/key").asText());
-        assertEquals("p",					res.at("/query/operands/1/wrap/layer").asText());
-        assertEquals("Baum",				res.at("/query/operands/2/wrap/key").asText());
+        assertEquals("Der", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("ADJA", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("p", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("Baum", res.at("/query/operands/2/wrap/key").asText());
     }
 
+
     @Test
-    public void testWithin() throws JsonProcessingException, IOException {
+    public void testWithin () throws JsonProcessingException, IOException {
         query = "[p=VVFIN] within s";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:position",  res.at("/query/operation").asText());
-        assertEquals("frames:isAround",     res.at("/query/frames/0").asText());
-        assertEquals("s",                   res.at("/query/operands/0/key").asText());
-        assertEquals("VVFIN",               res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("operation:position", res.at("/query/operation").asText());
+        assertEquals("frames:isAround", res.at("/query/frames/0").asText());
+        assertEquals("s", res.at("/query/operands/0/key").asText());
+        assertEquals("VVFIN", res.at("/query/operands/1/wrap/key").asText());
     }
 
+
     @Test
-    public void testMeta() throws JsonProcessingException, IOException {
+    public void testMeta () throws JsonProcessingException, IOException {
         query = "x meta textClass=Sport";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("x",                   res.at("/query/wrap/key").asText());
-        assertEquals("koral:doc",           res.at("/collection/@type").asText());
-        assertEquals("textClass",           res.at("/collection/key").asText());
-        assertEquals("Sport",               res.at("/collection/value").asText());
+        assertEquals("x", res.at("/query/wrap/key").asText());
+        assertEquals("koral:doc", res.at("/collection/@type").asText());
+        assertEquals("textClass", res.at("/collection/key").asText());
+        assertEquals("Sport", res.at("/collection/value").asText());
 
         query = "x meta textClass=Sport";
         qs.setQuery(query, "poliqarpplus");
         qs.setCollection("author=Smith");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("x",                   res.at("/query/wrap/key").asText());
-        assertEquals("koral:docGroup",      res.at("/collection/@type").asText());
-        assertEquals("operation:and",       res.at("/collection/operation").asText());
-        assertEquals("textClass",           res.at("/collection/operands/0/key").asText());
-        assertEquals("Sport",               res.at("/collection/operands/0/value").asText());
-        assertEquals("author",              res.at("/collection/operands/1/key").asText());
-        assertEquals("Smith",               res.at("/collection/operands/1/value").asText());
+        assertEquals("x", res.at("/query/wrap/key").asText());
+        assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
+        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("Sport", res.at("/collection/operands/0/value").asText());
+        assertEquals("author", res.at("/collection/operands/1/key").asText());
+        assertEquals("Smith", res.at("/collection/operands/1/value").asText());
 
         // TODO more tests
     }