Fix expansion of matches to respect character positions as well as token positions

Change-Id: Ic84282613730540c7f15638dfd76cc15c032f189
diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index d3d507a..bbeb953 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -1119,6 +1119,8 @@
                             && spanContext[0] < spanContext[1]) {
                         match.setStartPos(spanContext[0]);
                         match.setEndPos(spanContext[1]);
+						match.potentialStartPosChar = spanContext[2];
+						match.potentialEndPosChar = spanContext[3];
                         match.startMore = false;
                         match.endMore = false;
                     }
diff --git a/src/main/java/de/ids_mannheim/korap/response/Match.java b/src/main/java/de/ids_mannheim/korap/response/Match.java
index b3f045d..d3f45f4 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -88,7 +88,7 @@
 	private static final int PB_MARKER = -99999;
 
     // This advices the java compiler to ignore all loggings
-    public static final boolean DEBUG = false;
+    public static final boolean DEBUG = true;
 
     // Mapper for JSON serialization
     ObjectMapper mapper = new ObjectMapper();
@@ -1753,7 +1753,7 @@
             startOffsetChar = spanContext[2];
             endOffsetChar = spanContext[3];
             if (DEBUG)
-                log.trace("Got context is based from span {}-{}/{}-{}",
+                log.trace("Got context based on span {}-{}/{}-{}",
                         startOffset, endOffset, startOffsetChar, endOffsetChar);
         };
 
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
index 346a259..93c1f67 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
@@ -156,6 +156,10 @@
             // add this element number temporarily on the stack
             tempStack.push(eold);
 
+			// There are no more elements on the balance stack
+			if (this.balanceStack.empty())
+				break;
+
             // Check next element
             eold = this.balanceStack.pop();
         };
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java
index f0ead37..d2701a6 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java
@@ -30,7 +30,7 @@
 	private final static Logger log = LoggerFactory.getLogger(Match.class);
 
 	// This advices the java compiler to ignore all loggings
-    public static final boolean DEBUG = false;
+    public static final boolean DEBUG = true;
 
     // Constructor for highlighting elements
     public HighlightCombinatorElement (byte type, int number) {