Added payload in skipTo() in ClassSpans, 
added a testcase for the ticket #142
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
index 331a5b8..cf12852 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
@@ -22,7 +22,6 @@
 
 public class ClassSpans extends Spans {
     private List<byte[]> highlightedPayload;
-    private Collection<byte[]> payload;
     private final Spans spans;
     private byte number;
     private SpanQuery highlight;
@@ -73,7 +72,15 @@
 	    log.trace("Forward next");
 
 	if (spans.next()) {
-	    hasmorespans = true;
+		addClassPayload();
+	    return true;
+	};
+	hasmorespans = false;
+	return false;
+    };
+    
+    private void addClassPayload() throws IOException {
+    	hasmorespans = true;
 
 	    highlightedPayload.clear();
 
@@ -94,6 +101,7 @@
 	    //private
 	    bb.clear();
 	    bb.putInt(spans.start()).putInt(spans.end()).put(number);
+	   // System.out.println(number+":"+spans.start()+","+spans.end());
 	    /*
 	    if (DEBUG)
 		log.trace("Results in {} with {}", bb.toString(), bb.array());
@@ -107,18 +115,17 @@
 	    };
 	    */
 		
-	    return true;
-	};
-	hasmorespans = false;
-	return false;
-    };
+	}
 
     // inherit javadocs
     @Override
     public boolean skipTo(int target) throws IOException {
 	highlightedPayload.clear();
-	if (hasmorespans && spans.doc() < target)
-	    return spans.skipTo(target);
+	if (hasmorespans && spans.doc() < target &&
+			spans.skipTo(target)){
+		addClassPayload();
+	    return true;
+	}
 	return false;
     };
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java
index bfa1579..e03940a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java
@@ -61,12 +61,10 @@
 			    matchStartPosition = firstSpans.start();
 			    matchEndPosition = matchList.get(0).getEnd();
 			    if (collectPayloads)
-			    	matchPayload.addAll( matchList.get(0).getPayloads() );
-			    if (DEBUG) {
-				log.trace("Match doc#: {}",matchDocNumber);
-				log.trace("Match positions: {}-{}", matchStartPosition,
-					  matchEndPosition);
-			    };
+			    	matchPayload.addAll( matchList.get(0).getPayloads() );	
+			    //System.out.println(this.toString());
+				/*System.out.println("Match positions "+ matchStartPosition+","+
+				  matchEndPosition);*/
 			    matchList.remove(0);
 			    return true;
 			}
diff --git a/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java b/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java
new file mode 100644
index 0000000..5d3e0b5
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java
@@ -0,0 +1,73 @@
+package de.ids_mannheim.korap.highlight;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.junit.Test;
+
+import de.ids_mannheim.korap.KorapIndex;
+import de.ids_mannheim.korap.KorapQuery;
+import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.KorapSearch;
+import de.ids_mannheim.korap.query.SpanNextQuery;
+import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
+import de.ids_mannheim.korap.util.QueryException;
+
+
+public class TestClass {
+	KorapIndex ki;
+	KorapResult kr;
+	KorapSearch ks;
+	
+	@Test
+	public void queryJSONpoly1() throws QueryException, IOException {
+		
+		String jsonPath = getClass().getResource("/queries/poly1.json").getFile();
+		String jsonQuery = readFile(jsonPath);
+		SpanQueryWrapper sqwi = new KorapQuery("tokens").fromJSON(
+				jsonQuery
+		);
+		
+		SpanNextQuery sq = (SpanNextQuery) sqwi.toQuery();
+		//System.out.println(sq.toString());
+		
+		ki = new KorapIndex();
+	    ki.addDocFile(
+	    	getClass().getResource("/wiki/JJJ-00785.json.gz").getFile(),true);
+	    ki.addDocFile(
+		        getClass().getResource("/wiki/DDD-01402.json.gz").getFile(),true);
+		ki.commit();
+		kr = ki.search(sq, (short) 10);
+
+		assertEquals(61, kr.getMatch(0).getStartPos());
+		assertEquals(64, kr.getMatch(0).getEndPos());
+		assertEquals("... Bruckner (Wien) und Mathis Lussy (Paris). [{1:Inspiriert} " +
+				"{2:durch die}] additiven Modelle arabischer Rhythmik (er half ...", 
+				kr.getMatch(0).getSnippetBrackets());
+		
+		assertEquals(31, kr.getMatch(1).getStartPos());
+		assertEquals(34, kr.getMatch(1).getEndPos());
+		assertEquals("... des Sendens wird ein unhörbarer Unterton [{1:mitgesendet}, " +
+				"{2:auf den}] das angesprochene Funkgerät reagiert. Die Abkürzung ...", 
+				kr.getMatch(1).getSnippetBrackets());
+	}
+	
+	private String readFile(String path) {
+		StringBuilder sb = new StringBuilder();
+		try {
+		    BufferedReader in = new BufferedReader(new FileReader(path));
+		    String str;
+		    while ((str = in.readLine()) != null) {
+		    	sb.append(str);
+		    };
+		    in.close();
+		} catch (IOException e) {
+		    fail(e.getMessage());
+		}
+		return sb.toString();
+	}
+}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
index 6229ce1..8d0a05b 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
@@ -67,7 +67,9 @@
 	assertEquals("StartPos (0)", 7, kr.match(0).startPos);
 	assertEquals("EndPos (0)", 9, kr.match(0).endPos);
 	assertEquals("SnippetBrackets (0)", "... bcabca[ba]c", kr.match(0).snippetBrackets());
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><span class=\"match\">ba</span><span class=\"context-right\">c</span>", kr.match(0).snippetHTML());
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\">" +
+			"</span>bcabca</span><span class=\"match\">ba</span><span class=\"context-right" +
+			"\">c</span>", kr.match(0).snippetHTML());
 
 	sq = new SpanTermQuery(new Term("base", "s:b"));
 	kr = ki.search(sq, (short) 10);
@@ -78,7 +80,9 @@
 	assertEquals("SnippetBrackets (0)", "a[b]cabcab ...", kr.match(0).snippetBrackets());
 
 
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\">a</span><span class=\"match\">b</span><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", kr.match(0).snippetHTML());
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\">a</span><span class=\"match\">" +
+			"b</span><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", 
+			kr.match(0).snippetHTML());
 
 	assertEquals("StartPos (1)", 4, kr.match(1).startPos);
 	assertEquals("EndPos (1)", 5, kr.match(1).endPos);
@@ -94,11 +98,14 @@
 	assertEquals("StartPos (0)", 1, kr.match(0).startPos);
 	assertEquals("EndPos (0)", 2, kr.match(0).endPos);
 	assertEquals("snippetBrackets (0)", "a[{b}]cabcab ...", kr.match(0).snippetBrackets());
-	assertEquals("snippetHTML (0)", "<span class=\"context-left\">a</span><span class=\"match\"><em class=\"class-0 level-0\">b</em></span><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", kr.match(0).snippetHTML());
+	assertEquals("snippetHTML (0)", "<span class=\"context-left\">a</span><span class=\"match\">" +
+			"<em class=\"class-0 level-0\">b</em></span><span class=\"context-right\">cabcab<span " +
+			"class=\"more\"></span></span>", kr.match(0).snippetHTML());
 
 	assertEquals("StartPos (1)", 4, kr.match(1).startPos);
 	assertEquals("EndPos (1)", 5, kr.match(1).endPos);
 	assertEquals("snippetBrackets (1)", "abca[{b}]cabac", kr.match(1).snippetBrackets());
+	
 	assertEquals("StartPos (2)", 7, kr.match(2).startPos);
 	assertEquals("EndPos (2)", 8, kr.match(2).endPos);
 	assertEquals("snippetBrackets (2)", "... bcabca[{b}]ac", kr.match(2).snippetBrackets());
diff --git a/src/test/resources/queries/poly1.json b/src/test/resources/queries/poly1.json
new file mode 100644
index 0000000..bc1b138
--- /dev/null
+++ b/src/test/resources/queries/poly1.json
@@ -0,0 +1,82 @@
+{
+   "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.2/context.jsonld",
+   "announcements" : [
+      "Deprecated 2014-10-07: 'class' only to be supported until 3 months from deprecation date. Classes are now defined using the 'classOut' attribute.",
+      "Deprecated 2014-10-07: 'class' only to be supported until 3 months from deprecation date. Classes are now defined using the 'classOut' attribute."
+   ],
+   "collection" : {},
+   "collections" : [
+      {
+         "@type" : "korap:meta-filter",
+         "@value" : {
+            "@field" : "korap:field#corpusID",
+            "@type" : "korap:term",
+            "@value" : "WPD"
+         }
+      }
+   ],
+   "errors" : [],
+   "meta" : {},
+   "query" : {
+      "@type" : "korap:group",
+      "operands" : [
+         {
+            "@type" : "korap:group",
+            "class" : 1,
+            "classOut" : 1,
+            "operands" : [
+               {
+                  "@type" : "korap:token",
+                  "wrap" : {
+                     "@type" : "korap:term",
+                     "foundry" : "tt",
+                     "key" : "VVPP",
+                     "layer" : "p",
+                     "match" : "match:eq"
+                  }
+               }
+            ],
+            "operation" : "operation:class"
+         },
+         {
+            "@type" : "korap:group",
+            "class" : 2,
+            "classOut" : 2,
+            "operands" : [
+               {
+                  "@type" : "korap:group",
+                  "operands" : [
+                     {
+                        "@type" : "korap:token",
+                        "wrap" : {
+                           "@type" : "korap:term",
+                           "foundry" : "tt",
+                           "key" : "APPR",
+                           "layer" : "pos",
+                           "match" : "match:eq"
+                        }
+                     },
+                     {
+                        "@type" : "korap:token",
+                        "wrap" : {
+                           "@type" : "korap:term",
+                           "foundry" : "mate",
+                           "key" : "case",
+                           "layer" : "m",
+                           "match" : "match:eq",
+                           "value" : "acc"
+                        }
+                     }
+                  ],
+                  "operation" : "operation:sequence"
+               }
+            ],
+            "operation" : "operation:class"
+         }
+      ],
+      "operation" : "operation:sequence"
+   },
+   "warnings" : []
+}
+  
+
diff --git a/src/test/resources/wiki/DDD-01402.json.gz b/src/test/resources/wiki/DDD-01402.json.gz
new file mode 100644
index 0000000..5a810ac
--- /dev/null
+++ b/src/test/resources/wiki/DDD-01402.json.gz
Binary files differ
diff --git a/src/test/resources/wiki/JJJ-00785.json.gz b/src/test/resources/wiki/JJJ-00785.json.gz
new file mode 100644
index 0000000..978027e
--- /dev/null
+++ b/src/test/resources/wiki/JJJ-00785.json.gz
Binary files differ