Package joshua.prefix_tree

Source Code of joshua.prefix_tree.ExtractRulesTest

/* This file is part of the Joshua Machine Translation System.
*
* Joshua is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package joshua.prefix_tree;

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

import joshua.corpus.suffix_array.Compile;
import joshua.prefix_tree.ExtractRules;
import joshua.util.FormatUtil;

import org.testng.Assert;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

/**
* Front to end tests to extract rules from a sample corpus using suffix arrays.
*
* @author Lane Schwartz
* @version $LastChangedDate:2008-09-18 12:47:23 -0500 (Thu, 18 Sep 2008) $
*/
public class ExtractRulesTest {

  // The following ruby one-liner can convert a Hiero grammar
  //     into useful Java assertions for unit testing:
  //
  // cat hiero.grammar | sort | ruby -e 'STDIN.each_line{ |line| words=line.strip.split(" ||| "); puts "verifyLine(lines.get(n++), \"#{words[0]}\", \"#{words[1]}\", \"#{words[2]}\");"; }' > java-rules.txt
 
  // Also
  // cat hiero.grammar | sort | ruby -e 'STDIN.each_line{ |line| words=line.strip.split(" ||| "); puts "#{words[0]} ||| #{words[1]} ||| #{words[2]}"; }' > hiero.grammar.clean
 
  String sourceFileName;
  String targetFileName;
  String alignmentFileName;
  String alignmentsType;
  // ä == \u00E4
  // ü == \u00FC
  // ñ == \u00F1
  // í == \u00ED
 
  @Parameters({"alignmentsType"})
  @Test
  public void setup(String alignmentsType) throws IOException {
   
    // Tell System.out and System.err to use UTF8
    FormatUtil.useUTF8();
       
    String sourceCorpusString =
      "it makes him and it mars him , it sets him on yet it takes him off .";
   
    {
      File sourceFile = File.createTempFile("source", new Date().toString());
      PrintStream sourcePrintStream = new PrintStream(sourceFile, "UTF-8");
      sourcePrintStream.println(sourceCorpusString);
      sourcePrintStream.close();
      sourceFileName = sourceFile.getAbsolutePath();
    }
 
    String targetCorpusString =
      "das macht ihn und es besch\u00E4digt ihn , es setzt ihn auf und es f\u00FChrt ihn aus .";
   
   
    {
      File targetFile = File.createTempFile("target", new Date().toString());
      PrintWriter targetPrintStream = new PrintWriter(targetFile, "UTF-8");
//      PrintStream targetPrintStream = new PrintStream(targetFile, "UTF-8");
      targetPrintStream.println(targetCorpusString);
      targetPrintStream.close();
      targetFileName = targetFile.getAbsolutePath();
    }
   
    String alignmentString =
      "0-0 1-1 2-2 3-3 4-4 5-5 6-6 7-7 8-8 9-9 10-10 11-11 12-12 13-13 14-14 15-15 16-16 17-17";
   
    {
      File alignmentFile = File.createTempFile("alignment", new Date().toString());
      PrintStream alignmentPrintStream = new PrintStream(alignmentFile);
      alignmentPrintStream.println(alignmentString);
      alignmentPrintStream.close();
      alignmentFileName = alignmentFile.getAbsolutePath();
    }

    this.alignmentsType = alignmentsType;
  }

  /**
   * Extracts rules and returns the file name where the extracted rules are stored.
   *
   * @param testCorpusString
   * @param sentenceInitialX TODO
   * @param sentenceFinalX TODO
   * @param violatingX TODO
   * @return
   * @throws IOException
   */
  private List<String> extractRules(String testCorpusString, boolean sentenceInitialX, boolean sentenceFinalX, boolean violatingX) throws IOException {
    return extractRules(sourceFileName, targetFileName, alignmentFileName, testCorpusString, sentenceInitialX, sentenceFinalX, violatingX, false, 2);
  }
 
  private List<String> extractRules(String sourceFileName, String targetFileName, String alignmentFileName, String testCorpusString, boolean sentenceInitialX, boolean sentenceFinalX, boolean violatingX, boolean printPrefixTree, int minNonterminalSpan) throws IOException {
   
    String testFileName;
    {
      File testFile = File.createTempFile("test", new Date().toString());
      PrintStream testPrintStream = new PrintStream(testFile, "UTF-8");
      testPrintStream.println(testCorpusString);
      testPrintStream.close();
      testFileName = testFile.getAbsolutePath();
    }
   
    // Filename of the extracted rules file.
    String rulesFileName;
   
      File rulesFile = File.createTempFile("rules", new Date().toString());
      rulesFileName = rulesFile.getAbsolutePath();
    }
   
    String joshDirName;
    {
      File joshDir = File.createTempFile(new Date().toString(), "josh");
      joshDirName = joshDir.getAbsolutePath();
      joshDir.delete();
    }
   
    Compile compileJoshDir = new Compile();
    compileJoshDir.setSourceCorpus(sourceFileName);
    compileJoshDir.setTargetCorpus(targetFileName);
    compileJoshDir.setAlignments(alignmentFileName);
    compileJoshDir.setOutputDir(joshDirName);
    compileJoshDir.execute();
   
    ExtractRules extractRules = new ExtractRules();
    extractRules.setSentenceInitialX(sentenceInitialX);
    extractRules.setSentenceFinalX(sentenceFinalX);
    extractRules.setEdgeXViolates(violatingX);
    extractRules.setMaxPhraseLength(5);
    extractRules.setMinNonterminalSpan(minNonterminalSpan);
    extractRules.setJoshDir(joshDirName);
    extractRules.setTestFile(testFileName);
    extractRules.setOutputFile(rulesFileName);
    try {
      extractRules.execute();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
      Assert.fail(e.getLocalizedMessage());
    }
   
    Scanner scanner = new Scanner(new File(rulesFileName));
   
    ArrayList<String> lines = new ArrayList<String>();
   
    while (scanner.hasNextLine()) {
     
      String line = scanner.nextLine();
      lines.add(line);
     
    }
   
   
    Collections.sort(lines);
   
    return lines;
  }
 
  public void verifyLine(String line, String lhs, String sourceRHS, String targetRHS)  {
    String[] part = line.split(" \\|\\|\\| ");
    Assert.assertEquals(part[0], lhs);
    Assert.assertEquals(part[1], sourceRHS);
    Assert.assertEquals(part[2], targetRHS);
  }
 
  @Test
  public void europarlSmall100() throws IOException {
    extractEuroparlSmall100(false);
  }
 
//  @Test
//  public void europarlSmall100ViolatingX() throws IOException {
//    extractEuroparlSmall100(true);
//  }
 
  private static class WTF extends RuntimeException {
    WTF(String msg) { super(msg); }
  }
  public void extractEuroparlSmall100(boolean violatingX) throws IOException {
   
    String sourceFileName = "data/europarl.es.small.100";
    String targetFileName = "data/europarl.en.small.100";
    String alignmentFileName = "data/es_en_europarl_alignments.txt.small.100";
   
    String testSentence = "declaro reanudado el per\u00EDodo de sesiones del parlamento europeo , interrumpido el viernes 17 de diciembre pasado , y reitero a sus se\u00F1or\u00EDas mi deseo de que hayan tenido unas buenas vacaciones .";
   
    boolean printPrefixTree = false;
   
    int minNonterminalSpan = 2;
   
    List<String> lines = extractRules(sourceFileName, targetFileName, alignmentFileName, testSentence, true, true, violatingX, printPrefixTree, minNonterminalSpan);

    int expectedLines = 525;
    if (violatingX) expectedLines += 14;
   
//    for (String line : lines) {
//      System.err.println(line);
//    }
   
//    if (lines.size() != expectedLines) {
//      throw new WTF("lines.size()=="+lines.size() + " but expectedLines=="+expectedLines);
//    }
    Assert.assertEquals(lines.size(), expectedLines);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", ", [X,1] , [X,2]", ", [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] , [X,2]", ", [X,1] [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] , [X,2]", ", [X,2] [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] , [X,2]", ", you [X,1] [X,2]");
    if (violatingX) verifyLine(lines.get(n++), "[X]", ", [X,1] , y [X,2]", ", [X,1] , and [X,2]"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", ", [X,1] , y", ", [X,1] , and");
    verifyLine(lines.get(n++), "[X]", ", [X,1] , y", ", you [X,1] and");
    verifyLine(lines.get(n++), "[X]", ", [X,1] ,", ", [X,1] ,");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a [X,2]", ", [X,1] to wish [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a [X,2]", "too [X,1] to [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a sus se\u00F1or\u00EDas", ", [X,1] to wish you");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a", ", [X,1] to");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a", "too [X,1] to");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de [X,2]", ", [X,1] [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de [X,2]", ", [X,1] in [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de [X,2]", ", [X,1] of [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de [X,2]", ", [X,1] shall do [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de [X,2]", ", still [X,1] in [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de [X,2]", ", still [X,1] of [X,2]");
    if (violatingX) verifyLine(lines.get(n++), "[X]", ", [X,1] de que [X,2]", ", [X,1] that [X,2]"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", ", [X,1] de que", ", [X,1] that");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de que", ", [X,1] to the start of");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de", ", [X,1] attention to");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de", ", [X,1] in");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de", ", [X,1] of");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de", ", still [X,1] in");
    verifyLine(lines.get(n++), "[X]", ", [X,1] de", ", still [X,1] of");
    verifyLine(lines.get(n++), "[X]", ", [X,1] deseo [X,2]", ", [X,1] wish [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] deseo de [X,2]", ", [X,1] wish of [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] deseo de", ", [X,1] wish of");
    verifyLine(lines.get(n++), "[X]", ", [X,1] deseo", ", [X,1] wish");
    verifyLine(lines.get(n++), "[X]", ", [X,1] el [X,2] ,", ", [X,1] [X,2] ,");
    verifyLine(lines.get(n++), "[X]", ", [X,1] el [X,2]", ", [X,1] [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] el [X,2]", ", [X,1] the [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] el", ", [X,1] the");
    verifyLine(lines.get(n++), "[X]", ", [X,1] el", ", [X,1] there");
    if (violatingX) verifyLine(lines.get(n++), "[X]", ", [X,1] que [X,2]", ", [X,1] that [X,2]"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", ", [X,1] que", ", [X,1] that");
    verifyLine(lines.get(n++), "[X]", ", [X,1] que", ", [X,1] which");
    verifyLine(lines.get(n++), "[X]", ", [X,1] sus se\u00F1or\u00EDas", ", [X,1] wish you");
    if (violatingX) verifyLine(lines.get(n++), "[X]", ", [X,1] y [X,2]", ", [X,1] and [X,2]"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", ", [X,1] y", ", [X,1] and");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", and [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", still [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", there is [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", which [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", you [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", "and urging [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", "i [X,1]");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", "too [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y [X,1] de que", ", and [X,1] that");
    verifyLine(lines.get(n++), "[X]", ", y [X,1] sus se\u00F1or\u00EDas", ", and [X,1] wish you");
    verifyLine(lines.get(n++), "[X]", ", y [X,1]", ", and [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y reitero [X,1]", ", and i would like once again [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y reitero a [X,1]", ", and i would like once again to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y reitero a", ", and i would like once again to");
    verifyLine(lines.get(n++), "[X]", ", y reitero", ", and i would like once again");
    verifyLine(lines.get(n++), "[X]", ", y", ", and");
    verifyLine(lines.get(n++), "[X]", ",", ", which");
    verifyLine(lines.get(n++), "[X]", ",", ",");
    verifyLine(lines.get(n++), "[X]", ",", "and");
    verifyLine(lines.get(n++), "[X]", ",", "i");
    verifyLine(lines.get(n++), "[X]", ",", "too");
    verifyLine(lines.get(n++), "[X]", ".", ".");
    verifyLine(lines.get(n++), "[X]", ".", "?");
    verifyLine(lines.get(n++), "[X]", ".", "materialise");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] , [X,2]", "17 [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] , y reitero", "17 [X,1] , and i would like once again");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] , y", "17 [X,1] , and");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] ,", "17 [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] reitero", "17 [X,1] i would like once again");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] y reitero", "17 [X,1] and i would like once again");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] y", "17 [X,1] and");
    verifyLine(lines.get(n++), "[X]", "17 [X,1]", "17 [X,1]");
    verifyLine(lines.get(n++), "[X]", "17 de diciembre pasado ,", "17 december 1999 ,");
    verifyLine(lines.get(n++), "[X]", "17 de diciembre pasado [X,1]", "17 december 1999 [X,1]");
    verifyLine(lines.get(n++), "[X]", "17 de diciembre pasado", "17 december 1999");
    verifyLine(lines.get(n++), "[X]", "17", "17");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] , y", "[X,1] , [X,2] , and"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] ,", ", [X,2] [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] ,", "[X,1] , [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] ,", "[X,1] [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] 17", "[X,1] [X,2] 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] a", "[X,1] , [X,2] to");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] de que", "[X,1] , [X,2] that"); // Added in buggy
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] de que", "[X,1] [X,2] to the start of"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] de", "[X,1] , [X,2] in");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] de", "[X,1] , [X,2] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] de", "[X,1] [X,2] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] deseo de", "[X,1] , [X,2] wish of");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] deseo", "[X,1] , [X,2] wish");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] el", "[X,1] , [X,2] the");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] el", "[X,1] , [X,2] there");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] que", "[X,1] , [X,2] that"); // Added in buggy start
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] que", "[X,1] [X,2] that"); // Added in buggy start
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] y", "[X,1] , [X,2] and"); // Added in buggy start
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", ", [X,2] [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] , you [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] i [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] in sri lanka and urging [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] one , there is [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido [X,2] 17", "[X,1] adjourned [X,2] 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido [X,2]", "[X,1] adjourned [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido el viernes", "[X,1] adjourned on friday");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido", "[X,1] adjourned");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y [X,2]", "[X,1] , and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y [X,2]", "[X,1] and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y reitero a", "[X,1] , and i would like once again to");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y reitero", "[X,1] , and i would like once again");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y", "[X,1] , and");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y", "[X,1] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] i");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] in sri lanka and");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] one ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] to point out ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] .", "[X,1] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] .", "[X,1] ?");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2] , y", "[X,1] 17 [X,2] , and");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2] ,", "[X,1] 17 [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2] y", "[X,1] 17 [X,2] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2]", "[X,1] 17 [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 de diciembre pasado", "[X,1] 17 december 1999");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17", "[X,1] 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2] de", "[X,1] to [X,2] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2] que", "[X,1] for [X,2] which");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2] que", "[X,1] on [X,2] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2]", "[X,1] on [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2]", "[X,1] to [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2]", "[X,1] to wish [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] a sus se\u00F1or\u00EDas", "[X,1] to wish you");
    verifyLine(lines.get(n++), "[X]", "[X,1] a", "[X,1] on");
    verifyLine(lines.get(n++), "[X]", "[X,1] a", "[X,1] to");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] ,", "[X,1] [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] ,", "[X,1] in [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] ,", "[X,1] of [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] .", "[X,1] [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] .", "[X,1] for topical [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] .", "[X,1] of [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] .", "[X,1] shall do [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] .", "[X,2] [X,1] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] del", "[X,2] 's [X,1] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] el", "[X,1] [X,2] the");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] el", "[X,1] of [X,2] the");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] parlamento", "[X,1] with [X,2] house");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] y", "[X,1] in [X,2] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2] y", "[X,1] of [X,2] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] 's [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] [X,2] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] attention to [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] by [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] for topical [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] in [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] of [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] to [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,1] with [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,2] 's [X,1] for");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,2] 's [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "[X,2] [X,1] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "of [X,1] [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de [X,2]", "of [X,2] [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de diciembre pasado ,", "[X,1] december 1999 ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] de diciembre pasado [X,2]", "[X,1] december 1999 [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de diciembre pasado", "[X,1] december 1999");
    verifyLine(lines.get(n++), "[X]", "[X,1] de que [X,2]", "[X,1] that [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de que", "[X,1] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] de que", "[X,1] to the start of");
    verifyLine(lines.get(n++), "[X]", "[X,1] de sesiones del [X,2]", "[X,1] session of [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de sesiones del", "[X,1] session of");
    verifyLine(lines.get(n++), "[X]", "[X,1] de sesiones", "[X,1] part-session");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "'s [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] 's");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] attention to");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] by");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] for topical");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] for");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] in");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] on");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] to");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "[X,1] with");
    verifyLine(lines.get(n++), "[X]", "[X,1] de", "of [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2] ,", "[X,1] by [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2] ,", "[X,1] of [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2]", "[X,1] by [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2]", "[X,1] from [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2]", "[X,1] of [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2]", "[X,1] of the [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del [X,2]", "[X,1] of this [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del parlamento [X,2]", "[X,2] parliament [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del parlamento", "parliament [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del", "'s [X,1]");
    verifyLine(lines.get(n++), "[X]", "[X,1] del", "[X,1] 's");
    verifyLine(lines.get(n++), "[X]", "[X,1] del", "[X,1] by");
    verifyLine(lines.get(n++), "[X]", "[X,1] del", "[X,1] from");
    verifyLine(lines.get(n++), "[X]", "[X,1] del", "[X,1] of the");
    verifyLine(lines.get(n++), "[X]", "[X,1] del", "[X,1] of");
    verifyLine(lines.get(n++), "[X]", "[X,1] deseo [X,2] .", "[X,1] wish [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] deseo [X,2]", "[X,1] wish [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] deseo de [X,2] .", "[X,1] wish of [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] deseo de [X,2]", "[X,1] wish of [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] deseo de", "[X,1] wish of");
    verifyLine(lines.get(n++), "[X]", "[X,1] deseo", "[X,1] wish");
    verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2] ,", "[X,1] [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2] ,", "[X,1] the [X,2] ,");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2] a", "[X,1] the [X,2] on"); // Added in buggy start
    verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2] de", "[X,1] [X,2] in");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2] el", "[X,1] [X,2] the"); // Added in buggy start
    verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2] y", "[X,1] the [X,2] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2]", "[X,1] the [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] el [X,2]", "[X,1] this [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes 17 [X,2]", "[X,1] on friday 17 [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes 17", "[X,1] on friday 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes [X,2]", "[X,1] on friday [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes", "[X,1] on friday");
    verifyLine(lines.get(n++), "[X]", "[X,1] el", "[X,1] the");
    verifyLine(lines.get(n++), "[X]", "[X,1] el", "[X,1] there");
    verifyLine(lines.get(n++), "[X]", "[X,1] el", "[X,1] this");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan [X,2]", "[X,1] you [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan tenido [X,2]", "[X,1] you enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan tenido", "[X,1] you enjoyed");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan", "[X,1] you");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2] hayan", "[X,1] a happy new year [X,2] you");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2] que hayan", "[X,1] a happy new year [X,2] that you");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2] que", "[X,1] a happy new year [X,2] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2]", "[X,1] my [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi deseo de [X,2]", "[X,1] a happy new year in the hope [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi deseo de que", "[X,1] a happy new year in the hope that");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi deseo de", "[X,1] a happy new year in the hope");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi", "[X,1] my");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento [X,2] ,", "[X,1] parliament [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento [X,2]", "[X,1] house [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento [X,2]", "[X,1] parliament [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo , [X,2]", "[X,1] the european parliament [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo , interrumpido", "[X,1] the european parliament adjourned");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo", "[X,1] european parliament");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo", "[X,1] the european parliament");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento", "[X,1] house");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento", "[X,1] parliament");
    verifyLine(lines.get(n++), "[X]", "[X,1] pasado [X,2]", "[X,2] [X,1] past");
    verifyLine(lines.get(n++), "[X]", "[X,1] pasado", "[X,1] past");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2] .", "[X,1] [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2] .", "[X,1] that [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2] .", "[X,1] to [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2] .", "[X,1] which [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] , as expressed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] , that [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] for [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] that , [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] that [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] that since [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] to [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] which [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] who [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan [X,2]", "[X,1] that you [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan tenido [X,2]", "[X,1] that you enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan tenido", "[X,1] that you enjoyed");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan", "[X,1] that you");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] , as");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] , that");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] for");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] that since");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] to");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] which");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] who");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero [X,2]", "[X,1] i would like once again [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero a [X,2]", "[X,1] i would like once again to wish [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero a sus se\u00F1or\u00EDas", "[X,1] i would like once again to wish you");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero a", "[X,1] i would like once again to");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero", "[X,1] i would like once again");
    verifyLine(lines.get(n++), "[X]", "[X,1] sus se\u00F1or\u00EDas", "[X,1] wish you");
    verifyLine(lines.get(n++), "[X]", "[X,1] sus", "[X,1] its");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido [X,2] .", "[X,1] enjoyed [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido [X,2]", "[X,1] enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido unas buenas vacaciones", "[X,1] enjoyed a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido", "[X,1] enjoyed");
    verifyLine(lines.get(n++), "[X]", "[X,1] unas buenas vacaciones .", "[X,1] a pleasant festive period .");
    verifyLine(lines.get(n++), "[X]", "[X,1] unas buenas vacaciones", "[X,1] a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2] que", "[X,1] and [X,2] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] , and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] , that conference [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] activity and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] and which [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] with it and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y reitero a", "[X,1] and i would like once again to");
    verifyLine(lines.get(n++), "[X]", "[X,1] y reitero", "[X,1] and i would like once again");
    verifyLine(lines.get(n++), "[X]", "[X,1] y", "[X,1] , and");
    verifyLine(lines.get(n++), "[X]", "[X,1] y", "[X,1] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] y", "[X,1] activity and");
    verifyLine(lines.get(n++), "[X]", "[X,1] y", "[X,1] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] y", "[X,1] with it and");
    verifyLine(lines.get(n++), "[X]", "a [X,1] de", "on [X,1] in");
    verifyLine(lines.get(n++), "[X]", "a [X,1] de", "to [X,1] of");
    verifyLine(lines.get(n++), "[X]", "a [X,1] mi [X,2]", "to wish [X,1] a happy new year [X,2]");
    verifyLine(lines.get(n++), "[X]", "a [X,1] mi deseo de", "to wish [X,1] a happy new year in the hope");
    verifyLine(lines.get(n++), "[X]", "a [X,1] que [X,2]", "on [X,1] that [X,2]");
    verifyLine(lines.get(n++), "[X]", "a [X,1] que", "on [X,1] that");
    verifyLine(lines.get(n++), "[X]", "a [X,1]", "[X,1] to");
    verifyLine(lines.get(n++), "[X]", "a [X,1]", "on [X,1]");
    verifyLine(lines.get(n++), "[X]", "a [X,1]", "to [X,1]");
    verifyLine(lines.get(n++), "[X]", "a [X,1]", "to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "a sus se\u00F1or\u00EDas mi [X,1]", "to wish you a happy new year [X,1]");
    verifyLine(lines.get(n++), "[X]", "a sus se\u00F1or\u00EDas", "to wish you");
    verifyLine(lines.get(n++), "[X]", "a", "as");
    verifyLine(lines.get(n++), "[X]", "a", "on");
    verifyLine(lines.get(n++), "[X]", "a", "to");
    verifyLine(lines.get(n++), "[X]", "de [X,1] , [X,2]", "in [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] , [X,2]", "of [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] ,", "in [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "de [X,1] ,", "of [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "de [X,1] .", "for topical [X,1] .");
    verifyLine(lines.get(n++), "[X]", "de [X,1] .", "of [X,1] .");
    verifyLine(lines.get(n++), "[X]", "de [X,1] .", "with [X,1] .");
    verifyLine(lines.get(n++), "[X]", "de [X,1] del", "of [X,1] of");
    verifyLine(lines.get(n++), "[X]", "de [X,1] el [X,2]", "before the courts once [X,1] the [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] el [X,2]", "of [X,1] the [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] el", "before the courts once [X,1] the");
    verifyLine(lines.get(n++), "[X]", "de [X,1] el", "of [X,1] the");
    verifyLine(lines.get(n++), "[X]", "de [X,1] parlamento [X,2]", "with [X,1] house [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] parlamento", "with [X,1] house");
    verifyLine(lines.get(n++), "[X]", "de [X,1] y [X,2]", "in [X,1] and [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] y [X,2]", "of [X,1] and [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] y [X,2]", "of [X,1] and which [X,2]");
    verifyLine(lines.get(n++), "[X]", "de [X,1] y", "by [X,1] and");
    verifyLine(lines.get(n++), "[X]", "de [X,1] y", "in [X,1] and");
    verifyLine(lines.get(n++), "[X]", "de [X,1] y", "of [X,1] and");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "'s [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "[X,1] 's");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "[X,1] of");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "before the courts once [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "by [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "for topical [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "in [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "of [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "on [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "to [X,1]");
    verifyLine(lines.get(n++), "[X]", "de [X,1]", "with [X,1]");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado , [X,1]", "december 1999 , [X,1]");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado , y", "december 1999 , and");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado ,", "december 1999 ,");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado [X,1] a", "december 1999 [X,1] to");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado [X,1] reitero", "december 1999 [X,1] i would like once again");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado [X,1]", "december 1999 [X,1]");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado", "december 1999");
    verifyLine(lines.get(n++), "[X]", "de que", "to the start of");
    verifyLine(lines.get(n++), "[X]", "de sesiones del [X,1] 17", "session of [X,1] 17");
    verifyLine(lines.get(n++), "[X]", "de sesiones del [X,1]", "session of [X,1]");
    verifyLine(lines.get(n++), "[X]", "de sesiones del parlamento europeo", "session of the european parliament");
    verifyLine(lines.get(n++), "[X]", "de sesiones del", "session of");
    verifyLine(lines.get(n++), "[X]", "de", "'s");
    verifyLine(lines.get(n++), "[X]", "de", "before");
    verifyLine(lines.get(n++), "[X]", "de", "by");
    verifyLine(lines.get(n++), "[X]", "de", "for topical");
    verifyLine(lines.get(n++), "[X]", "de", "for");
    verifyLine(lines.get(n++), "[X]", "de", "from");
    verifyLine(lines.get(n++), "[X]", "de", "in");
    verifyLine(lines.get(n++), "[X]", "de", "of");
    verifyLine(lines.get(n++), "[X]", "de", "on");
    verifyLine(lines.get(n++), "[X]", "de", "to");
    verifyLine(lines.get(n++), "[X]", "de", "with");
    verifyLine(lines.get(n++), "[X]", "declaro reanudado el per\u00EDodo [X,1]", "i declare resumed the [X,1]");
    verifyLine(lines.get(n++), "[X]", "declaro reanudado el per\u00EDodo", "i declare resumed the");
    verifyLine(lines.get(n++), "[X]", "del [X,1] , [X,2]", "by [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "del [X,1] ,", "by [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "del [X,1] ,", "of [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "del [X,1]", "by [X,1]");
    verifyLine(lines.get(n++), "[X]", "del [X,1]", "from [X,1]");
    verifyLine(lines.get(n++), "[X]", "del [X,1]", "of [X,1]");
    verifyLine(lines.get(n++), "[X]", "del [X,1]", "of the [X,1]");
    verifyLine(lines.get(n++), "[X]", "del [X,1]", "of this [X,1]");
    verifyLine(lines.get(n++), "[X]", "del parlamento [X,1]", "[X,1] parliament");
    verifyLine(lines.get(n++), "[X]", "del parlamento", "parliament 's");
    verifyLine(lines.get(n++), "[X]", "del parlamento", "parliament");
    verifyLine(lines.get(n++), "[X]", "del", "'s");
    verifyLine(lines.get(n++), "[X]", "del", "by");
    verifyLine(lines.get(n++), "[X]", "del", "from");
    verifyLine(lines.get(n++), "[X]", "del", "of the");
    verifyLine(lines.get(n++), "[X]", "del", "of");
    verifyLine(lines.get(n++), "[X]", "del", "parliament");
    verifyLine(lines.get(n++), "[X]", "deseo [X,1] .", "wish [X,1] .");
    verifyLine(lines.get(n++), "[X]", "deseo [X,1]", "wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1] .", "wish of [X,1] .");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1] tenido [X,2]", "in the hope [X,1] enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1] tenido", "in the hope [X,1] enjoyed");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1]", "in the hope [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1]", "wish of [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de que [X,1]", "in the hope that [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de que hayan [X,1]", "in the hope that you [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de que hayan tenido", "in the hope that you enjoyed");
    verifyLine(lines.get(n++), "[X]", "deseo de que hayan", "in the hope that you");
    verifyLine(lines.get(n++), "[X]", "deseo de que", "in the hope that");
    verifyLine(lines.get(n++), "[X]", "deseo de", "in the hope");
    verifyLine(lines.get(n++), "[X]", "deseo de", "wish of");
    verifyLine(lines.get(n++), "[X]", "deseo", "hope");
    verifyLine(lines.get(n++), "[X]", "deseo", "wish");
    verifyLine(lines.get(n++), "[X]", "el [X,1] , [X,2]", "the [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "el [X,1] ,", "the [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "el [X,1] ,", "this [X,1] ,");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "el [X,1] a [X,2]", "the [X,1] on [X,2]"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", "el [X,1] a", "the [X,1] on");
    verifyLine(lines.get(n++), "[X]", "el [X,1] de [X,2] ,", "the [X,1] [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "el [X,1] de [X,2]", "the [X,1] [X,2]");
    verifyLine(lines.get(n++), "[X]", "el [X,1] de", "the [X,1] 's");
    if (violatingX) verifyLine(lines.get(n++), "[X]", "el [X,1] el [X,2]", "the [X,1] [X,2]"); // Added in buggy
    verifyLine(lines.get(n++), "[X]", "el [X,1] y [X,2]", "the [X,1] and [X,2]");
    verifyLine(lines.get(n++), "[X]", "el [X,1] y", "the [X,1] and");
    verifyLine(lines.get(n++), "[X]", "el [X,1]", "the [X,1]");
    verifyLine(lines.get(n++), "[X]", "el [X,1]", "this [X,1]");
    verifyLine(lines.get(n++), "[X]", "el viernes 17 [X,1] ,", "on friday 17 [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "el viernes 17 [X,1] y", "on friday 17 [X,1] and");
    verifyLine(lines.get(n++), "[X]", "el viernes 17 [X,1]", "on friday 17 [X,1]");
    verifyLine(lines.get(n++), "[X]", "el viernes 17", "on friday 17");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1] , y", "on friday [X,1] , and");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1] ,", "on friday [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1] y", "on friday [X,1] and");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1]", "on friday [X,1]");
    verifyLine(lines.get(n++), "[X]", "el viernes", "on friday");
    verifyLine(lines.get(n++), "[X]", "el", "the");
    verifyLine(lines.get(n++), "[X]", "el", "there");
    verifyLine(lines.get(n++), "[X]", "el", "this");
    verifyLine(lines.get(n++), "[X]", "europeo", "european");
    verifyLine(lines.get(n++), "[X]", "europeo", "the european");
    verifyLine(lines.get(n++), "[X]", "hayan [X,1] .", "you [X,1] .");
    verifyLine(lines.get(n++), "[X]", "hayan [X,1]", "you [X,1]");
    verifyLine(lines.get(n++), "[X]", "hayan tenido [X,1] .", "you enjoyed [X,1] .");
    verifyLine(lines.get(n++), "[X]", "hayan tenido [X,1]", "you enjoyed [X,1]");
    verifyLine(lines.get(n++), "[X]", "hayan tenido unas buenas vacaciones", "you enjoyed a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "hayan tenido", "you enjoyed");
    verifyLine(lines.get(n++), "[X]", "hayan", "you");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] , y", "adjourned [X,1] , and");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] ,", "adjourned [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17 [X,2] ,", "adjourned [X,1] 17 [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17 [X,2] y", "adjourned [X,1] 17 [X,2] and");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17 [X,2]", "adjourned [X,1] 17 [X,2]");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17", "adjourned [X,1] 17");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] de diciembre pasado", "adjourned [X,1] december 1999");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] y", "adjourned [X,1] and");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1]", "adjourned [X,1]");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes 17 [X,1]", "adjourned on friday 17 [X,1]");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes 17", "adjourned on friday 17");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes [X,1] ,", "adjourned on friday [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes [X,1] y", "adjourned on friday [X,1] and");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes [X,1]", "adjourned on friday [X,1]");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes", "adjourned on friday");
    verifyLine(lines.get(n++), "[X]", "interrumpido", "adjourned");
    verifyLine(lines.get(n++), "[X]", "mi [X,1] que [X,2]", "my [X,1] that since [X,2]");
    verifyLine(lines.get(n++), "[X]", "mi [X,1] que", "my [X,1] that since");
    verifyLine(lines.get(n++), "[X]", "mi [X,1]", "my [X,1]");
    verifyLine(lines.get(n++), "[X]", "mi", "my");
    verifyLine(lines.get(n++), "[X]", "parlamento [X,1] , [X,2]", "parliament [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "parlamento [X,1] ,", "parliament [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "parlamento [X,1] de", "house [X,1] 's");
    verifyLine(lines.get(n++), "[X]", "parlamento [X,1]", "house [X,1]");
    verifyLine(lines.get(n++), "[X]", "parlamento [X,1]", "parliament [X,1]");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , [X,1] 17", "the european parliament [X,1] 17");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , [X,1]", "the european parliament [X,1]");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , interrumpido [X,1]", "the european parliament adjourned [X,1]");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , interrumpido", "the european parliament adjourned");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo", "european parliament");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo", "the european parliament");
    verifyLine(lines.get(n++), "[X]", "parlamento", "house");
    verifyLine(lines.get(n++), "[X]", "parlamento", "parliament");
    verifyLine(lines.get(n++), "[X]", "pasado", "past");
    verifyLine(lines.get(n++), "[X]", "que [X,1] .", "that [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que [X,1] .", "to [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que [X,1] .", "which [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que [X,1] .", "who [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que [X,1] unas buenas vacaciones", "that [X,1] a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "[X,1] that");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "as expressed [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "because [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "for [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "that , [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "that [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "that since [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "to [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "which [X,1]");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "who [X,1]");
    verifyLine(lines.get(n++), "[X]", "que hayan [X,1] .", "that you [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que hayan [X,1]", "that you [X,1]");
    verifyLine(lines.get(n++), "[X]", "que hayan tenido [X,1] .", "that you enjoyed [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que hayan tenido [X,1]", "that you enjoyed [X,1]");
    verifyLine(lines.get(n++), "[X]", "que hayan tenido", "that you enjoyed");
    verifyLine(lines.get(n++), "[X]", "que hayan", "that you");
    verifyLine(lines.get(n++), "[X]", "que", "as");
    verifyLine(lines.get(n++), "[X]", "que", "because");
    verifyLine(lines.get(n++), "[X]", "que", "for");
    verifyLine(lines.get(n++), "[X]", "que", "that since");
    verifyLine(lines.get(n++), "[X]", "que", "that");
    verifyLine(lines.get(n++), "[X]", "que", "to");
    verifyLine(lines.get(n++), "[X]", "que", "which");
    verifyLine(lines.get(n++), "[X]", "que", "who");
    verifyLine(lines.get(n++), "[X]", "reitero [X,1]", "i would like once again [X,1]");
    verifyLine(lines.get(n++), "[X]", "reitero a [X,1]", "i would like once again to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "reitero a sus se\u00F1or\u00EDas", "i would like once again to wish you");
    verifyLine(lines.get(n++), "[X]", "reitero a", "i would like once again to");
    verifyLine(lines.get(n++), "[X]", "reitero", "i would like once again");
    verifyLine(lines.get(n++), "[X]", "sesiones", "part-session");
    verifyLine(lines.get(n++), "[X]", "sesiones", "session");
    verifyLine(lines.get(n++), "[X]", "sus [X,1]", "its [X,1]");
    verifyLine(lines.get(n++), "[X]", "sus [X,1]", "their [X,1]");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas [X,1]", "you [X,1]");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi [X,1] hayan", "you a happy new year [X,1] you");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi [X,1] que", "you a happy new year [X,1] that");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi [X,1]", "you a happy new year [X,1]");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi deseo de", "you a happy new year in the hope");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas", "you");
    verifyLine(lines.get(n++), "[X]", "sus", "his");
    verifyLine(lines.get(n++), "[X]", "sus", "its");
    verifyLine(lines.get(n++), "[X]", "sus", "their");
    verifyLine(lines.get(n++), "[X]", "tenido [X,1] .", "enjoyed [X,1] .");
    verifyLine(lines.get(n++), "[X]", "tenido [X,1]", "enjoyed [X,1]");
    verifyLine(lines.get(n++), "[X]", "tenido unas buenas vacaciones .", "enjoyed a pleasant festive period .");
    verifyLine(lines.get(n++), "[X]", "tenido unas buenas vacaciones", "enjoyed a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "tenido", "enjoyed");
    verifyLine(lines.get(n++), "[X]", "tenido", "has");
    verifyLine(lines.get(n++), "[X]", "unas buenas vacaciones .", "a pleasant festive period .");
    verifyLine(lines.get(n++), "[X]", "unas buenas vacaciones", "a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "y [X,1] de [X,2]", "and [X,1] [X,2]");
    verifyLine(lines.get(n++), "[X]", "y [X,1] de que", "and [X,1] that");
    verifyLine(lines.get(n++), "[X]", "y [X,1] de", "and [X,1] of");
    verifyLine(lines.get(n++), "[X]", "y [X,1] que [X,2]", "and [X,1] that [X,2]");
    verifyLine(lines.get(n++), "[X]", "y [X,1] que", "and [X,1] that");
    verifyLine(lines.get(n++), "[X]", "y [X,1] sus se\u00F1or\u00EDas", "and [X,1] wish you");
    verifyLine(lines.get(n++), "[X]", "y [X,1]", ", that conference [X,1]");
    verifyLine(lines.get(n++), "[X]", "y [X,1]", "and [X,1]");
    verifyLine(lines.get(n++), "[X]", "y [X,1]", "and the [X,1]");
    verifyLine(lines.get(n++), "[X]", "y [X,1]", "and which [X,1]");
    verifyLine(lines.get(n++), "[X]", "y reitero [X,1]", "and i would like once again [X,1]");
    verifyLine(lines.get(n++), "[X]", "y reitero a [X,1]", "and i would like once again to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "y reitero a sus se\u00F1or\u00EDas", "and i would like once again to wish you");
    verifyLine(lines.get(n++), "[X]", "y reitero a", "and i would like once again to");
    verifyLine(lines.get(n++), "[X]", "y reitero", "and i would like once again");
    verifyLine(lines.get(n++), "[X]", "y", ",");
    verifyLine(lines.get(n++), "[X]", "y", "and");
 
    Assert.assertEquals(n, expectedLines);
   
  }
 
  @Test
  public void europarlSmall1() throws IOException {
   
    String sourceFileName = "data/europarl.es.small.1";
    String targetFileName = "data/europarl.en.small.1";
    String alignmentFileName = "data/es_en_europarl_alignments.txt.small.1";
   
    boolean printPrefixTree = false;
       
    List<String> lines = extractRules(sourceFileName, targetFileName, alignmentFileName, "declaro reanudado el per\u00EDodo de sesiones del parlamento europeo , interrumpido el viernes 17 de diciembre pasado , y reitero a sus se\u00F1or\u00EDas mi deseo de que hayan tenido unas buenas vacaciones .", true, true, false, printPrefixTree, 2);

//    Assert.assertEquals(lines.size(), 197);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", ", [X,1] a [X,2]", ", [X,1] to wish [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a sus se\u00F1or\u00EDas", ", [X,1] to wish you");
    verifyLine(lines.get(n++), "[X]", ", [X,1] a", ", [X,1] to");
    verifyLine(lines.get(n++), "[X]", ", [X,1] sus se\u00F1or\u00EDas", ", [X,1] wish you");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y [X,1] sus se\u00F1or\u00EDas", ", and [X,1] wish you");
    verifyLine(lines.get(n++), "[X]", ", y [X,1]", ", and [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y reitero [X,1]", ", and i would like once again [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y reitero a [X,1]", ", and i would like once again to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", ", y reitero a", ", and i would like once again to");
    verifyLine(lines.get(n++), "[X]", ", y reitero", ", and i would like once again");
    verifyLine(lines.get(n++), "[X]", ", y", ", and");
    verifyLine(lines.get(n++), "[X]", ",", ",");
    verifyLine(lines.get(n++), "[X]", ".", ".");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] , [X,2]", "17 [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] , y reitero", "17 [X,1] , and i would like once again");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] , y", "17 [X,1] , and");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] ,", "17 [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] reitero", "17 [X,1] i would like once again");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] y reitero", "17 [X,1] and i would like once again");
    verifyLine(lines.get(n++), "[X]", "17 [X,1] y", "17 [X,1] and");
    verifyLine(lines.get(n++), "[X]", "17 [X,1]", "17 [X,1]");
    verifyLine(lines.get(n++), "[X]", "17 de diciembre pasado ,", "17 december 1999 ,");
    verifyLine(lines.get(n++), "[X]", "17 de diciembre pasado [X,1]", "17 december 1999 [X,1]");
    verifyLine(lines.get(n++), "[X]", "17 de diciembre pasado", "17 december 1999");
    verifyLine(lines.get(n++), "[X]", "17", "17");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] 17", "[X,1] [X,2] 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] a", "[X,1] , [X,2] to");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido [X,2] 17", "[X,1] adjourned [X,2] 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido [X,2]", "[X,1] adjourned [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido el viernes", "[X,1] adjourned on friday");
    verifyLine(lines.get(n++), "[X]", "[X,1] , interrumpido", "[X,1] adjourned");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y [X,2]", "[X,1] , and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y reitero a", "[X,1] , and i would like once again to");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y reitero", "[X,1] , and i would like once again");
    verifyLine(lines.get(n++), "[X]", "[X,1] , y", "[X,1] , and");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] .", "[X,1] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2] , y", "[X,1] 17 [X,2] , and");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2] ,", "[X,1] 17 [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2] y", "[X,1] 17 [X,2] and");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 [X,2]", "[X,1] 17 [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17 de diciembre pasado", "[X,1] 17 december 1999");
    verifyLine(lines.get(n++), "[X]", "[X,1] 17", "[X,1] 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] a [X,2]", "[X,1] to wish [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] a sus se\u00F1or\u00EDas", "[X,1] to wish you");
    verifyLine(lines.get(n++), "[X]", "[X,1] a", "[X,1] to");
    verifyLine(lines.get(n++), "[X]", "[X,1] de diciembre pasado ,", "[X,1] december 1999 ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] de diciembre pasado [X,2]", "[X,1] december 1999 [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de diciembre pasado", "[X,1] december 1999");
    verifyLine(lines.get(n++), "[X]", "[X,1] de sesiones del [X,2]", "[X,1] session of [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] de sesiones del", "[X,1] session of");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes 17 [X,2]", "[X,1] on friday 17 [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes 17", "[X,1] on friday 17");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes [X,2]", "[X,1] on friday [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] el viernes", "[X,1] on friday");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan [X,2]", "[X,1] you [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan tenido [X,2]", "[X,1] you enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan tenido", "[X,1] you enjoyed");
    verifyLine(lines.get(n++), "[X]", "[X,1] hayan", "[X,1] you");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2] hayan", "[X,1] a happy new year [X,2] you");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2] que hayan", "[X,1] a happy new year [X,2] that you");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi [X,2] que", "[X,1] a happy new year [X,2] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi deseo de [X,2]", "[X,1] a happy new year in the hope [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi deseo de que", "[X,1] a happy new year in the hope that");
    verifyLine(lines.get(n++), "[X]", "[X,1] mi deseo de", "[X,1] a happy new year in the hope");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo , [X,2]", "[X,1] the european parliament [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo , interrumpido", "[X,1] the european parliament adjourned");
    verifyLine(lines.get(n++), "[X]", "[X,1] parlamento europeo", "[X,1] the european parliament");
    verifyLine(lines.get(n++), "[X]", "[X,1] que [X,2]", "[X,1] that [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan [X,2]", "[X,1] that you [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan tenido [X,2]", "[X,1] that you enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan tenido", "[X,1] that you enjoyed");
    verifyLine(lines.get(n++), "[X]", "[X,1] que hayan", "[X,1] that you");
    verifyLine(lines.get(n++), "[X]", "[X,1] que", "[X,1] that");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero [X,2]", "[X,1] i would like once again [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero a [X,2]", "[X,1] i would like once again to wish [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero a sus se\u00F1or\u00EDas", "[X,1] i would like once again to wish you");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero a", "[X,1] i would like once again to");
    verifyLine(lines.get(n++), "[X]", "[X,1] reitero", "[X,1] i would like once again");
    verifyLine(lines.get(n++), "[X]", "[X,1] sus se\u00F1or\u00EDas", "[X,1] wish you");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido [X,2] .", "[X,1] enjoyed [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido [X,2]", "[X,1] enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido unas buenas vacaciones", "[X,1] enjoyed a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "[X,1] tenido", "[X,1] enjoyed");
    verifyLine(lines.get(n++), "[X]", "[X,1] unas buenas vacaciones .", "[X,1] a pleasant festive period .");
    verifyLine(lines.get(n++), "[X]", "[X,1] unas buenas vacaciones", "[X,1] a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "[X,1] y [X,2]", "[X,1] and [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] y reitero a", "[X,1] and i would like once again to");
    verifyLine(lines.get(n++), "[X]", "[X,1] y reitero", "[X,1] and i would like once again");
    verifyLine(lines.get(n++), "[X]", "[X,1] y", "[X,1] and");
    verifyLine(lines.get(n++), "[X]", "a [X,1] mi [X,2]", "to wish [X,1] a happy new year [X,2]");
    verifyLine(lines.get(n++), "[X]", "a [X,1] mi deseo de", "to wish [X,1] a happy new year in the hope");
    verifyLine(lines.get(n++), "[X]", "a [X,1]", "to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "a sus se\u00F1or\u00EDas mi [X,1]", "to wish you a happy new year [X,1]");
    verifyLine(lines.get(n++), "[X]", "a sus se\u00F1or\u00EDas", "to wish you");
    verifyLine(lines.get(n++), "[X]", "a", "to");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado , [X,1]", "december 1999 , [X,1]");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado , y", "december 1999 , and");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado ,", "december 1999 ,");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado [X,1] a", "december 1999 [X,1] to");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado [X,1] reitero", "december 1999 [X,1] i would like once again");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado [X,1]", "december 1999 [X,1]");
    verifyLine(lines.get(n++), "[X]", "de diciembre pasado", "december 1999");
    verifyLine(lines.get(n++), "[X]", "de sesiones del [X,1] 17", "session of [X,1] 17");
    verifyLine(lines.get(n++), "[X]", "de sesiones del [X,1]", "session of [X,1]");
    verifyLine(lines.get(n++), "[X]", "de sesiones del parlamento europeo", "session of the european parliament");
    verifyLine(lines.get(n++), "[X]", "de sesiones del", "session of");
    verifyLine(lines.get(n++), "[X]", "de", "in");
    verifyLine(lines.get(n++), "[X]", "declaro reanudado el per\u00EDodo [X,1]", "i declare resumed the [X,1]");
    verifyLine(lines.get(n++), "[X]", "declaro reanudado el per\u00EDodo", "i declare resumed the");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1] tenido [X,2]", "in the hope [X,1] enjoyed [X,2]");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1] tenido", "in the hope [X,1] enjoyed");
    verifyLine(lines.get(n++), "[X]", "deseo de [X,1]", "in the hope [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de que [X,1]", "in the hope that [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de que hayan [X,1]", "in the hope that you [X,1]");
    verifyLine(lines.get(n++), "[X]", "deseo de que hayan tenido", "in the hope that you enjoyed");
    verifyLine(lines.get(n++), "[X]", "deseo de que hayan", "in the hope that you");
    verifyLine(lines.get(n++), "[X]", "deseo de que", "in the hope that");
    verifyLine(lines.get(n++), "[X]", "deseo de", "in the hope");
    verifyLine(lines.get(n++), "[X]", "deseo", "hope");
    verifyLine(lines.get(n++), "[X]", "el viernes 17 [X,1] ,", "on friday 17 [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "el viernes 17 [X,1] y", "on friday 17 [X,1] and");
    verifyLine(lines.get(n++), "[X]", "el viernes 17 [X,1]", "on friday 17 [X,1]");
    verifyLine(lines.get(n++), "[X]", "el viernes 17", "on friday 17");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1] , y", "on friday [X,1] , and");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1] ,", "on friday [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1] y", "on friday [X,1] and");
    verifyLine(lines.get(n++), "[X]", "el viernes [X,1]", "on friday [X,1]");
    verifyLine(lines.get(n++), "[X]", "el viernes", "on friday");
    verifyLine(lines.get(n++), "[X]", "europeo", "the european");
    verifyLine(lines.get(n++), "[X]", "hayan [X,1] .", "you [X,1] .");
    verifyLine(lines.get(n++), "[X]", "hayan [X,1]", "you [X,1]");
    verifyLine(lines.get(n++), "[X]", "hayan tenido [X,1] .", "you enjoyed [X,1] .");
    verifyLine(lines.get(n++), "[X]", "hayan tenido [X,1]", "you enjoyed [X,1]");
    verifyLine(lines.get(n++), "[X]", "hayan tenido unas buenas vacaciones", "you enjoyed a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "hayan tenido", "you enjoyed");
    verifyLine(lines.get(n++), "[X]", "hayan", "you");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] , y", "adjourned [X,1] , and");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] ,", "adjourned [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17 [X,2] ,", "adjourned [X,1] 17 [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17 [X,2] y", "adjourned [X,1] 17 [X,2] and");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17 [X,2]", "adjourned [X,1] 17 [X,2]");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] 17", "adjourned [X,1] 17");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] de diciembre pasado", "adjourned [X,1] december 1999");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1] y", "adjourned [X,1] and");
    verifyLine(lines.get(n++), "[X]", "interrumpido [X,1]", "adjourned [X,1]");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes 17 [X,1]", "adjourned on friday 17 [X,1]");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes 17", "adjourned on friday 17");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes [X,1] ,", "adjourned on friday [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes [X,1] y", "adjourned on friday [X,1] and");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes [X,1]", "adjourned on friday [X,1]");
    verifyLine(lines.get(n++), "[X]", "interrumpido el viernes", "adjourned on friday");
    verifyLine(lines.get(n++), "[X]", "interrumpido", "adjourned");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , [X,1] 17", "the european parliament [X,1] 17");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , [X,1]", "the european parliament [X,1]");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , interrumpido [X,1]", "the european parliament adjourned [X,1]");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo , interrumpido", "the european parliament adjourned");
    verifyLine(lines.get(n++), "[X]", "parlamento europeo", "the european parliament");
    verifyLine(lines.get(n++), "[X]", "parlamento", "parliament");
    verifyLine(lines.get(n++), "[X]", "que [X,1] .", "that [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que [X,1] unas buenas vacaciones", "that [X,1] a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "que [X,1]", "that [X,1]");
    verifyLine(lines.get(n++), "[X]", "que hayan [X,1] .", "that you [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que hayan [X,1]", "that you [X,1]");
    verifyLine(lines.get(n++), "[X]", "que hayan tenido [X,1] .", "that you enjoyed [X,1] .");
    verifyLine(lines.get(n++), "[X]", "que hayan tenido [X,1]", "that you enjoyed [X,1]");
    verifyLine(lines.get(n++), "[X]", "que hayan tenido", "that you enjoyed");
    verifyLine(lines.get(n++), "[X]", "que hayan", "that you");
    verifyLine(lines.get(n++), "[X]", "que", "that");
    verifyLine(lines.get(n++), "[X]", "reitero [X,1]", "i would like once again [X,1]");
    verifyLine(lines.get(n++), "[X]", "reitero a [X,1]", "i would like once again to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "reitero a sus se\u00F1or\u00EDas", "i would like once again to wish you");
    verifyLine(lines.get(n++), "[X]", "reitero a", "i would like once again to");
    verifyLine(lines.get(n++), "[X]", "reitero", "i would like once again");
    verifyLine(lines.get(n++), "[X]", "sesiones", "session");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi [X,1] hayan", "you a happy new year [X,1] you");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi [X,1] que", "you a happy new year [X,1] that");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi [X,1]", "you a happy new year [X,1]");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas mi deseo de", "you a happy new year in the hope");
    verifyLine(lines.get(n++), "[X]", "sus se\u00F1or\u00EDas", "you");
    verifyLine(lines.get(n++), "[X]", "tenido [X,1] .", "enjoyed [X,1] .");
    verifyLine(lines.get(n++), "[X]", "tenido [X,1]", "enjoyed [X,1]");
    verifyLine(lines.get(n++), "[X]", "tenido unas buenas vacaciones .", "enjoyed a pleasant festive period .");
    verifyLine(lines.get(n++), "[X]", "tenido unas buenas vacaciones", "enjoyed a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "tenido", "enjoyed");
    verifyLine(lines.get(n++), "[X]", "unas buenas vacaciones .", "a pleasant festive period .");
    verifyLine(lines.get(n++), "[X]", "unas buenas vacaciones", "a pleasant festive period");
    verifyLine(lines.get(n++), "[X]", "y [X,1] sus se\u00F1or\u00EDas", "and [X,1] wish you");
    verifyLine(lines.get(n++), "[X]", "y [X,1]", "and [X,1]");
    verifyLine(lines.get(n++), "[X]", "y reitero [X,1]", "and i would like once again [X,1]");
    verifyLine(lines.get(n++), "[X]", "y reitero a [X,1]", "and i would like once again to wish [X,1]");
    verifyLine(lines.get(n++), "[X]", "y reitero a sus se\u00F1or\u00EDas", "and i would like once again to wish you");
    verifyLine(lines.get(n++), "[X]", "y reitero a", "and i would like once again to");
    verifyLine(lines.get(n++), "[X]", "y reitero", "and i would like once again");
    verifyLine(lines.get(n++), "[X]", "y", "and");

  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet1() throws IOException {
   
    List<String> lines = extractRules("it", false, false, false);
   
    Assert.assertEquals(lines.size(), 2);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
   
//    From Hiero:
//    [X] ||| [X,1] it ||| [X,1] es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| es [X,1] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| das [X,1] ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| [X,1] it [X,2] ||| [X,1] es [X,2] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it ||| das ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it ||| es ||| 0.124938733876 -0.0 0.124938733876

  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet1Expanded() throws IOException {
   
    List<String> lines = extractRules("it", true, true, false);
//   
//    for (String line : lines) {
//      System.err.println(line);
//    }
   
    Assert.assertEquals(lines.size(), 6);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2]", "[X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it", "[X,1] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "das [X,1]");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "es [X,1]");
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
   
//    From Hiero:
//    [X] ||| [X,1] it ||| [X,1] es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| es [X,1] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| das [X,1] ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| [X,1] it [X,2] ||| [X,1] es [X,2] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it ||| das ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it ||| es ||| 0.124938733876 -0.0 0.124938733876

  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet2() throws IOException {
   
    List<String> lines = extractRules("it makes", false, false, false);
   
    Assert.assertEquals(lines.size(), 6);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "das [X,1]");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "es [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes", "das macht");
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
    verifyLine(lines.get(n++), "[X]", "makes", "macht");
   
    //From Hiero:
//    [X] ||| [X,1] it ||| [X,1] es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| es [X,1] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| das [X,1] ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| [X,1] it [X,2] ||| [X,1] es [X,2] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it ||| das ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it ||| es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| makes ||| macht ||| -0.0 -0.0 -0.0
//    [X] ||| makes [X,1] ||| macht [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| it makes [X,1] ||| das macht [X,1] ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes ||| das macht ||| -0.0 -0.0 0.60206001997

  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet2Expanded() throws IOException {
   
    List<String> lines = extractRules("it makes", true, true, false);
   
    Assert.assertEquals(lines.size(), 10);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2]", "[X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it", "[X,1] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "das [X,1]");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "es [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1]", "das macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes", "das macht");
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1]", "macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes", "macht");
 
    //From Hiero:
//    [X] ||| [X,1] it ||| [X,1] es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| es [X,1] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| das [X,1] ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| [X,1] it [X,2] ||| [X,1] es [X,2] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it ||| das ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it ||| es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| makes ||| macht ||| -0.0 -0.0 -0.0
//    [X] ||| makes [X,1] ||| macht [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| it makes [X,1] ||| das macht [X,1] ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes ||| das macht ||| -0.0 -0.0 0.60206001997
   
  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet3() throws IOException {
   
    List<String> lines = extractRules("it makes him", false, false, false);
   
    Assert.assertEquals(lines.size(), 23-9);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", "[X,1] him", "[X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him", "ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him", "das [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him", "es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "das [X,1]");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "es [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1]", "das macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes him", "das macht ihn");
    verifyLine(lines.get(n++), "[X]", "it makes", "das macht");
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1]", "macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him", "macht ihn");
    verifyLine(lines.get(n++), "[X]", "makes", "macht");
   
//    From Hiero:
//    [X] ||| [X,1] him [X,2] ||| [X,1] ihn [X,2] ||| -0.0 -0.0 -0.0
//    [X] ||| [X,1] him ||| [X,1] ihn ||| -0.0 -0.0 -0.0
//    [X] ||| [X,1] it [X,2] him ||| [X,1] es [X,2] ihn ||| 0.176091253757 -0.0 0.124938733876
//    [X] ||| [X,1] it [X,2] ||| [X,1] es [X,2] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| [X,1] it ||| [X,1] es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| him [X,1] ||| ihn [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| him ||| ihn ||| -0.0 -0.0 -0.0
//    [X] ||| it [X,1] him [X,2] ||| das [X,1] ihn [X,2] ||| 0.477121263742 -0.0 0.60206001997
//    [X] ||| it [X,1] him [X,2] ||| es [X,1] ihn [X,2] ||| 0.176091253757 -0.0 0.124938733876
//    [X] ||| it [X,1] him ||| das [X,1] ihn ||| 0.477121263742 -0.0 0.60206001997
//    [X] ||| it [X,1] him ||| es [X,1] ihn ||| 0.176091253757 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| das [X,1] ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it [X,1] ||| es [X,1] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it makes [X,1] ||| das macht [X,1] ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes him [X,1] ||| das macht ihn [X,1] ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes him ||| das macht ihn ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes ||| das macht ||| -0.0 -0.0 0.60206001997
//    [X] ||| it ||| das ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it ||| es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| makes [X,1] ||| macht [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| makes him [X,1] ||| macht ihn [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| makes him ||| macht ihn ||| -0.0 -0.0 -0.0
//    [X] ||| makes ||| macht ||| -0.0 -0.0 -0.0

  }
 
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet3Expanded() throws IOException {
   
    List<String> lines = extractRules("it makes him", true, true, false);
   
    final int expectedLines = 23;
    Assert.assertEquals(lines.size(), expectedLines);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2]", "[X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him", "[X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] him", "[X,1] es [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2]", "[X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it", "[X,1] es");
    verifyLine(lines.get(n++), "[X]", "him [X,1]", "ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "him", "ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him [X,2]", "das [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him [X,2]", "es [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him", "das [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him", "es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "das [X,1]");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "es [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1]", "das macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1]", "das macht ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes him", "das macht ihn");
    verifyLine(lines.get(n++), "[X]", "it makes", "das macht");
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1]", "macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1]", "macht ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him", "macht ihn");
    verifyLine(lines.get(n++), "[X]", "makes", "macht");
   
    Assert.assertEquals(n, expectedLines);
//    From Hiero:
//    [X] ||| [X,1] him [X,2] ||| [X,1] ihn [X,2] ||| -0.0 -0.0 -0.0
//    [X] ||| [X,1] him ||| [X,1] ihn ||| -0.0 -0.0 -0.0
//    [X] ||| [X,1] it [X,2] him ||| [X,1] es [X,2] ihn ||| 0.176091253757 -0.0 0.124938733876
//    [X] ||| [X,1] it [X,2] ||| [X,1] es [X,2] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| [X,1] it ||| [X,1] es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| him [X,1] ||| ihn [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| him ||| ihn ||| -0.0 -0.0 -0.0
//    [X] ||| it [X,1] him [X,2] ||| das [X,1] ihn [X,2] ||| 0.477121263742 -0.0 0.60206001997
//    [X] ||| it [X,1] him [X,2] ||| es [X,1] ihn [X,2] ||| 0.176091253757 -0.0 0.124938733876
//    [X] ||| it [X,1] him ||| das [X,1] ihn ||| 0.477121263742 -0.0 0.60206001997
//    [X] ||| it [X,1] him ||| es [X,1] ihn ||| 0.176091253757 -0.0 0.124938733876
//    [X] ||| it [X,1] ||| das [X,1] ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it [X,1] ||| es [X,1] ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| it makes [X,1] ||| das macht [X,1] ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes him [X,1] ||| das macht ihn [X,1] ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes him ||| das macht ihn ||| -0.0 -0.0 0.60206001997
//    [X] ||| it makes ||| das macht ||| -0.0 -0.0 0.60206001997
//    [X] ||| it ||| das ||| 0.60206001997 -0.0 0.60206001997
//    [X] ||| it ||| es ||| 0.124938733876 -0.0 0.124938733876
//    [X] ||| makes [X,1] ||| macht [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| makes him [X,1] ||| macht ihn [X,1] ||| -0.0 -0.0 -0.0
//    [X] ||| makes him ||| macht ihn ||| -0.0 -0.0 -0.0
//    [X] ||| makes ||| macht ||| -0.0 -0.0 -0.0

  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet18() throws IOException {
    extractFull(false, false, false, false);
  }
 
  @Test(dependsOnMethods={"setup"})
  public void testRuleSet18Expanded() throws IOException {
    extractFull(true, true, true, true);
  }
 
 
  private void extractFull(boolean sentenceInitialX, boolean sentenceFinalX, boolean initialXViolates, boolean finalXViolates) throws IOException {
   
    List<String> lines = extractRules("it makes him and it mars him , it sets him on yet it takes him off .", sentenceInitialX, sentenceFinalX, initialXViolates);
   
    Assert.assertEquals(lines.size(), 922);
   
    int n = 0;
    verifyLine(lines.get(n++), "[X]", ", [X,1] him [X,2] him", ", [X,1] ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him [X,2] it", ", [X,1] ihn [X,2] es");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him [X,2] off", ", [X,1] ihn [X,2] aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him [X,2] takes", ", [X,1] ihn [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him [X,2]", ", [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him off", ", [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him on [X,2]", ", [X,1] ihn auf [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him on yet", ", [X,1] ihn auf und");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him on", ", [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", ", [X,1] him", ", [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", ", [X,1] it [X,2] off", ", [X,1] es [X,2] aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] it [X,2]", ", [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] it takes [X,2]", ", [X,1] es f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] it takes him", ", [X,1] es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", ", [X,1] it takes", ", [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", [X,1] it", ", [X,1] es");
    verifyLine(lines.get(n++), "[X]", ", [X,1] off", ", [X,1] aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on [X,2] him", ", [X,1] auf [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on [X,2] off", ", [X,1] auf [X,2] aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on [X,2] takes", ", [X,1] auf [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on [X,2]", ", [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on yet [X,2]", ", [X,1] auf und [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on yet it", ", [X,1] auf und es");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on yet", ", [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", ", [X,1] on", ", [X,1] auf");
    verifyLine(lines.get(n++), "[X]", ", [X,1] takes [X,2]", ", [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] takes him off", ", [X,1] f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] takes him", ", [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", ", [X,1] takes", ", [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet [X,2] him", ", [X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet [X,2] off", ", [X,1] und [X,2] aus");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet [X,2]", ", [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet it [X,2]", ", [X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet it takes", ", [X,1] und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet it", ", [X,1] und es");
    verifyLine(lines.get(n++), "[X]", ", [X,1] yet", ", [X,1] und");
    verifyLine(lines.get(n++), "[X]", ", [X,1]", ", [X,1]");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] him off", ", es [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] him", ", es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] it [X,2]", ", es [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] it takes", ", es [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] it", ", es [X,1] es");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] off", ", es [X,1] aus");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] on [X,2]", ", es [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] on yet", ", es [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] on", ", es [X,1] auf");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] takes [X,2]", ", es [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] takes him", ", es [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] takes", ", es [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] yet [X,2]", ", es [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] yet it", ", es [X,1] und es");
    verifyLine(lines.get(n++), "[X]", ", it [X,1] yet", ", es [X,1] und");
    verifyLine(lines.get(n++), "[X]", ", it [X,1]", ", es [X,1]");
    verifyLine(lines.get(n++), "[X]", ", it sets [X,1] him", ", es setzt [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", ", it sets [X,1] it", ", es setzt [X,1] es");
    verifyLine(lines.get(n++), "[X]", ", it sets [X,1] off", ", es setzt [X,1] aus");
    verifyLine(lines.get(n++), "[X]", ", it sets [X,1] takes", ", es setzt [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", ", it sets [X,1] yet", ", es setzt [X,1] und");
    verifyLine(lines.get(n++), "[X]", ", it sets [X,1]", ", es setzt [X,1]");
    verifyLine(lines.get(n++), "[X]", ", it sets him [X,1]", ", es setzt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", ", it sets him on", ", es setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", ", it sets him", ", es setzt ihn");
    verifyLine(lines.get(n++), "[X]", ", it sets", ", es setzt");
    verifyLine(lines.get(n++), "[X]", ", it", ", es");
    verifyLine(lines.get(n++), "[X]", ",", ",");
    verifyLine(lines.get(n++), "[X]", ".", ".");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] him on", "[X,1] , [X,2] ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] him", "[X,1] , [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] it takes", "[X,1] , [X,2] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] it", "[X,1] , [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] on yet", "[X,1] , [X,2] auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] on", "[X,1] , [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] takes", "[X,1] , [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] yet it", "[X,1] , [X,2] und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2] yet", "[X,1] , [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] , [X,2]", "[X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it [X,2] it", "[X,1] , es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it [X,2] on", "[X,1] , es [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it [X,2] takes", "[X,1] , es [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it [X,2] yet", "[X,1] , es [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it [X,2]", "[X,1] , es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it sets [X,2]", "[X,1] , es setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it sets him", "[X,1] , es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it sets", "[X,1] , es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] , it", "[X,1] , es");
    verifyLine(lines.get(n++), "[X]", "[X,1] ,", "[X,1] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] .", "[X,1] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] , it", "[X,1] und [X,2] , es");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] ,", "[X,1] und [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] him ,", "[X,1] und [X,2] ihn ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] him", "[X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] it sets", "[X,1] und [X,2] es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] it", "[X,1] und [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] sets him", "[X,1] und [X,2] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2] sets", "[X,1] und [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] and [X,2]", "[X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it [X,2] ,", "[X,1] und es [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it [X,2] him", "[X,1] und es [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it [X,2] it", "[X,1] und es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it [X,2] sets", "[X,1] und es [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it [X,2]", "[X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it mars [X,2]", "[X,1] und es besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it mars him", "[X,1] und es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it mars", "[X,1] und es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "[X,1] and it", "[X,1] und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] and", "[X,1] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , [X,2] him", "[X,1] ihn , [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , [X,2] it", "[X,1] ihn , [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , [X,2] on", "[X,1] ihn , [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , [X,2] yet", "[X,1] ihn , [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , [X,2]", "[X,1] ihn , [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , it [X,2]", "[X,1] ihn , es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , it sets", "[X,1] ihn , es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him , it", "[X,1] ihn , es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him ,", "[X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] , it", "[X,1] ihn [X,2] , es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] ,", "[X,1] ihn [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] .", "[X,1] ihn [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] him ,", "[X,1] ihn [X,2] ihn ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] him off", "[X,1] ihn [X,2] ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] him on", "[X,1] ihn [X,2] ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] him", "[X,1] ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] it sets", "[X,1] ihn [X,2] es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] it takes", "[X,1] ihn [X,2] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] it", "[X,1] ihn [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] mars him", "[X,1] ihn [X,2] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] mars", "[X,1] ihn [X,2] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] off .", "[X,1] ihn [X,2] aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] off", "[X,1] ihn [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] on yet", "[X,1] ihn [X,2] auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] on", "[X,1] ihn [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] sets him", "[X,1] ihn [X,2] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] sets", "[X,1] ihn [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] takes him", "[X,1] ihn [X,2] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] takes", "[X,1] ihn [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] yet it", "[X,1] ihn [X,2] und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2] yet", "[X,1] ihn [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] him [X,2]", "[X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and [X,2] ,", "[X,1] ihn und [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and [X,2] him", "[X,1] ihn und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and [X,2] it", "[X,1] ihn und [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and [X,2] sets", "[X,1] ihn und [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and [X,2]", "[X,1] ihn und [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and it [X,2]", "[X,1] ihn und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and it mars", "[X,1] ihn und es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and it", "[X,1] ihn und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him and", "[X,1] ihn und");
    verifyLine(lines.get(n++), "[X]", "[X,1] him off .", "[X,1] ihn aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] him off", "[X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on [X,2] .", "[X,1] ihn auf [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on [X,2] him", "[X,1] ihn auf [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on [X,2] off", "[X,1] ihn auf [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on [X,2] takes", "[X,1] ihn auf [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on [X,2]", "[X,1] ihn auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on yet [X,2]", "[X,1] ihn auf und [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on yet it", "[X,1] ihn auf und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on yet", "[X,1] ihn auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] him on", "[X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] him", "[X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] , it", "[X,1] es [X,2] , es");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] ,", "[X,1] es [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] .", "[X,1] es [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] him on", "[X,1] es [X,2] ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] him", "[X,1] es [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] it sets", "[X,1] es [X,2] es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] it takes", "[X,1] es [X,2] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] it", "[X,1] es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] off .", "[X,1] es [X,2] aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] off", "[X,1] es [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] on yet", "[X,1] es [X,2] auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] on", "[X,1] es [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] sets him", "[X,1] es [X,2] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] sets", "[X,1] es [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] takes him", "[X,1] es [X,2] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] takes", "[X,1] es [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] yet it", "[X,1] es [X,2] und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2] yet", "[X,1] es [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] it [X,2]", "[X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars [X,2] him", "[X,1] es besch\u00E4digt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars [X,2] it", "[X,1] es besch\u00E4digt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars [X,2] on", "[X,1] es besch\u00E4digt [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars [X,2] sets", "[X,1] es besch\u00E4digt [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars [X,2]", "[X,1] es besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars him ,", "[X,1] es besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars him [X,2]", "[X,1] es besch\u00E4digt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars him", "[X,1] es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it mars", "[X,1] es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets [X,2] him", "[X,1] es setzt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets [X,2] it", "[X,1] es setzt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets [X,2] takes", "[X,1] es setzt [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets [X,2] yet", "[X,1] es setzt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets [X,2]", "[X,1] es setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets him [X,2]", "[X,1] es setzt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets him on", "[X,1] es setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets him", "[X,1] es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it sets", "[X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it takes [X,2] .", "[X,1] es f\u00FChrt [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] it takes [X,2]", "[X,1] es f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it takes him [X,2]", "[X,1] es f\u00FChrt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] it takes him off", "[X,1] es f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] it takes him", "[X,1] es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] it takes", "[X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] it", "[X,1] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] him on", "[X,1] besch\u00E4digt [X,2] ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] him", "[X,1] besch\u00E4digt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] it sets", "[X,1] besch\u00E4digt [X,2] es setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] it", "[X,1] besch\u00E4digt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] on yet", "[X,1] besch\u00E4digt [X,2] auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] on", "[X,1] besch\u00E4digt [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] sets him", "[X,1] besch\u00E4digt [X,2] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] sets", "[X,1] besch\u00E4digt [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2] yet", "[X,1] besch\u00E4digt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars [X,2]", "[X,1] besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him , [X,2]", "[X,1] besch\u00E4digt ihn , [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him , it", "[X,1] besch\u00E4digt ihn , es");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him ,", "[X,1] besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him [X,2] him", "[X,1] besch\u00E4digt ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him [X,2] on", "[X,1] besch\u00E4digt ihn [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him [X,2] sets", "[X,1] besch\u00E4digt ihn [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him [X,2] yet", "[X,1] besch\u00E4digt ihn [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him [X,2]", "[X,1] besch\u00E4digt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars him", "[X,1] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] mars", "[X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "[X,1] off .", "[X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] off", "[X,1] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] .", "[X,1] auf [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] him off", "[X,1] auf [X,2] ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] him", "[X,1] auf [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] off .", "[X,1] auf [X,2] aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] off", "[X,1] auf [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] takes him", "[X,1] auf [X,2] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2] takes", "[X,1] auf [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] on [X,2]", "[X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet [X,2] .", "[X,1] auf und [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet [X,2] him", "[X,1] auf und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet [X,2] off", "[X,1] auf und [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet [X,2]", "[X,1] auf und [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet it [X,2]", "[X,1] auf und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet it takes", "[X,1] auf und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet it", "[X,1] auf und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] on yet", "[X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] on", "[X,1] auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] him off", "[X,1] setzt [X,2] ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] him", "[X,1] setzt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] it takes", "[X,1] setzt [X,2] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] it", "[X,1] setzt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] off", "[X,1] setzt [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] takes him", "[X,1] setzt [X,2] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] takes", "[X,1] setzt [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] yet it", "[X,1] setzt [X,2] und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2] yet", "[X,1] setzt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets [X,2]", "[X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him [X,2] him", "[X,1] setzt ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him [X,2] it", "[X,1] setzt ihn [X,2] es");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him [X,2] off", "[X,1] setzt ihn [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him [X,2] takes", "[X,1] setzt ihn [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him [X,2]", "[X,1] setzt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him on [X,2]", "[X,1] setzt ihn auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him on yet", "[X,1] setzt ihn auf und");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him on", "[X,1] setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets him", "[X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] sets", "[X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes [X,2] .", "[X,1] f\u00FChrt [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes [X,2]", "[X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes him [X,2]", "[X,1] f\u00FChrt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes him off .", "[X,1] f\u00FChrt ihn aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes him off", "[X,1] f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes him", "[X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] takes", "[X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet [X,2] .", "[X,1] und [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet [X,2] him off", "[X,1] und [X,2] ihn aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet [X,2] him", "[X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet [X,2] off .", "[X,1] und [X,2] aus .");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet [X,2] off", "[X,1] und [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet [X,2]", "[X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it [X,2] .", "[X,1] und es [X,2] .");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it [X,2] off", "[X,1] und es [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it [X,2]", "[X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it takes [X,2]", "[X,1] und es f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it takes him", "[X,1] und es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it takes", "[X,1] und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet it", "[X,1] und es");
    verifyLine(lines.get(n++), "[X]", "[X,1] yet", "[X,1] und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , [X,2] him", "und [X,1] , [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , [X,2] on", "und [X,1] , [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , [X,2] yet", "und [X,1] , [X,2] und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , [X,2]", "und [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , it [X,2]", "und [X,1] , es [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , it sets", "und [X,1] , es setzt");
    verifyLine(lines.get(n++), "[X]", "and [X,1] , it", "und [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "and [X,1] ,", "und [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him , [X,2]", "und [X,1] ihn , [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him , it", "und [X,1] ihn , es");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him ,", "und [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him [X,2] him", "und [X,1] ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him [X,2] on", "und [X,1] ihn [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him [X,2] sets", "und [X,1] ihn [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him [X,2] yet", "und [X,1] ihn [X,2] und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him [X,2]", "und [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him on yet", "und [X,1] ihn auf und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him on", "und [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "and [X,1] him", "und [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it [X,2] on", "und [X,1] es [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it [X,2] yet", "und [X,1] es [X,2] und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it [X,2]", "und [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it sets [X,2]", "und [X,1] es setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it sets him", "und [X,1] es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it sets", "und [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "and [X,1] it", "und [X,1] es");
    verifyLine(lines.get(n++), "[X]", "and [X,1] on yet", "und [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] on", "und [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "and [X,1] sets [X,2] yet", "und [X,1] setzt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "and [X,1] sets [X,2]", "und [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] sets him [X,2]", "und [X,1] setzt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "and [X,1] sets him on", "und [X,1] setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "and [X,1] sets him", "und [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "and [X,1] sets", "und [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "and [X,1] yet", "und [X,1] und");
    verifyLine(lines.get(n++), "[X]", "and [X,1]", "und [X,1]");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] , [X,2]", "und es [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] , it", "und es [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] ,", "und es [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] him [X,2]", "und es [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] him on", "und es [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] him", "und es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] it [X,2]", "und es [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] it sets", "und es [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] it", "und es [X,1] es");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] on yet", "und es [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] on", "und es [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] sets [X,2]", "und es [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] sets him", "und es [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] sets", "und es [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "and it [X,1] yet", "und es [X,1] und");
    verifyLine(lines.get(n++), "[X]", "and it [X,1]", "und es [X,1]");
    verifyLine(lines.get(n++), "[X]", "and it mars [X,1] him", "und es besch\u00E4digt [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "and it mars [X,1] it", "und es besch\u00E4digt [X,1] es");
    verifyLine(lines.get(n++), "[X]", "and it mars [X,1] on", "und es besch\u00E4digt [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "and it mars [X,1] sets", "und es besch\u00E4digt [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "and it mars [X,1] yet", "und es besch\u00E4digt [X,1] und");
    verifyLine(lines.get(n++), "[X]", "and it mars [X,1]", "und es besch\u00E4digt [X,1]");
    verifyLine(lines.get(n++), "[X]", "and it mars him ,", "und es besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "and it mars him [X,1]", "und es besch\u00E4digt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "and it mars him", "und es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "and it mars", "und es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "and it", "und es");
    verifyLine(lines.get(n++), "[X]", "and", "und");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] him [X,2]", "ihn , [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] him on", "ihn , [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] him", "ihn , [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] it [X,2]", "ihn , [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] it takes", "ihn , [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] it", "ihn , [X,1] es");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] on [X,2]", "ihn , [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] on yet", "ihn , [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] on", "ihn , [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] takes him", "ihn , [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] takes", "ihn , [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] yet [X,2]", "ihn , [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] yet it", "ihn , [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "him , [X,1] yet", "ihn , [X,1] und");
    verifyLine(lines.get(n++), "[X]", "him , [X,1]", "ihn , [X,1]");
    verifyLine(lines.get(n++), "[X]", "him , it [X,1] him", "ihn , es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him , it [X,1] it", "ihn , es [X,1] es");
    verifyLine(lines.get(n++), "[X]", "him , it [X,1] on", "ihn , es [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "him , it [X,1] takes", "ihn , es [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him , it [X,1] yet", "ihn , es [X,1] und");
    verifyLine(lines.get(n++), "[X]", "him , it [X,1]", "ihn , es [X,1]");
    verifyLine(lines.get(n++), "[X]", "him , it sets [X,1]", "ihn , es setzt [X,1]");
    verifyLine(lines.get(n++), "[X]", "him , it sets him", "ihn , es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "him , it sets", "ihn , es setzt");
    verifyLine(lines.get(n++), "[X]", "him , it", "ihn , es");
    verifyLine(lines.get(n++), "[X]", "him ,", "ihn ,");
    verifyLine(lines.get(n++), "[X]", "him [X,1] , [X,2] him", "ihn [X,1] , [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] , [X,2] on", "ihn [X,1] , [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] , [X,2]", "ihn [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] , it [X,2]", "ihn [X,1] , es [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] , it sets", "ihn [X,1] , es setzt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] , it", "ihn [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] ,", "ihn [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "him [X,1] .", "ihn [X,1] .");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him , [X,2]", "ihn [X,1] ihn , [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him , it", "ihn [X,1] ihn , es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him ,", "ihn [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him [X,2] him", "ihn [X,1] ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him [X,2] it", "ihn [X,1] ihn [X,2] es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him [X,2] on", "ihn [X,1] ihn [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him [X,2] sets", "ihn [X,1] ihn [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him [X,2] takes", "ihn [X,1] ihn [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him [X,2]", "ihn [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him off .", "ihn [X,1] ihn aus .");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him off", "ihn [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him on [X,2]", "ihn [X,1] ihn auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him on yet", "ihn [X,1] ihn auf und");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him on", "ihn [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] him", "ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it [X,2] .", "ihn [X,1] es [X,2] .");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it [X,2] off", "ihn [X,1] es [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it [X,2] on", "ihn [X,1] es [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it [X,2]", "ihn [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it sets [X,2]", "ihn [X,1] es setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it sets him", "ihn [X,1] es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it sets", "ihn [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it takes [X,2]", "ihn [X,1] es f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it takes him", "ihn [X,1] es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it takes", "ihn [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] it", "ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars [X,2] him", "ihn [X,1] besch\u00E4digt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars [X,2] it", "ihn [X,1] besch\u00E4digt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars [X,2] on", "ihn [X,1] besch\u00E4digt [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars [X,2] sets", "ihn [X,1] besch\u00E4digt [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars [X,2]", "ihn [X,1] besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars him ,", "ihn [X,1] besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars him [X,2]", "ihn [X,1] besch\u00E4digt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars him", "ihn [X,1] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] mars", "ihn [X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] off .", "ihn [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "him [X,1] off", "ihn [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on [X,2] him", "ihn [X,1] auf [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on [X,2] takes", "ihn [X,1] auf [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on [X,2]", "ihn [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on yet [X,2]", "ihn [X,1] auf und [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on yet it", "ihn [X,1] auf und es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on yet", "ihn [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "him [X,1] on", "ihn [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets [X,2] him", "ihn [X,1] setzt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets [X,2] it", "ihn [X,1] setzt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets [X,2] takes", "ihn [X,1] setzt [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets [X,2] yet", "ihn [X,1] setzt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets [X,2]", "ihn [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets him [X,2]", "ihn [X,1] setzt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets him on", "ihn [X,1] setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets him", "ihn [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] sets", "ihn [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] takes [X,2] .", "ihn [X,1] f\u00FChrt [X,2] .");
    verifyLine(lines.get(n++), "[X]", "him [X,1] takes [X,2]", "ihn [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] takes him [X,2]", "ihn [X,1] f\u00FChrt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] takes him off", "ihn [X,1] f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "him [X,1] takes him", "ihn [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] takes", "ihn [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] yet [X,2] him", "ihn [X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "him [X,1] yet [X,2]", "ihn [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] yet it [X,2]", "ihn [X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "him [X,1] yet it takes", "ihn [X,1] und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him [X,1] yet it", "ihn [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "him [X,1] yet", "ihn [X,1] und");
    verifyLine(lines.get(n++), "[X]", "him [X,1]", "ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] , [X,2]", "ihn und [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] , it", "ihn und [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] ,", "ihn und [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] him ,", "ihn und [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] him [X,2]", "ihn und [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] him on", "ihn und [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] him", "ihn und [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] it [X,2]", "ihn und [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] it sets", "ihn und [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] it", "ihn und [X,1] es");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] on", "ihn und [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] sets [X,2]", "ihn und [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] sets him", "ihn und [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "him and [X,1] sets", "ihn und [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "him and [X,1]", "ihn und [X,1]");
    verifyLine(lines.get(n++), "[X]", "him and it [X,1] ,", "ihn und es [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "him and it [X,1] him", "ihn und es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him and it [X,1] it", "ihn und es [X,1] es");
    verifyLine(lines.get(n++), "[X]", "him and it [X,1] on", "ihn und es [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "him and it [X,1] sets", "ihn und es [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "him and it [X,1]", "ihn und es [X,1]");
    verifyLine(lines.get(n++), "[X]", "him and it mars [X,1]", "ihn und es besch\u00E4digt [X,1]");
    verifyLine(lines.get(n++), "[X]", "him and it mars him", "ihn und es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "him and it mars", "ihn und es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "him and it", "ihn und es");
    verifyLine(lines.get(n++), "[X]", "him and", "ihn und");
    verifyLine(lines.get(n++), "[X]", "him off .", "ihn aus .");
    verifyLine(lines.get(n++), "[X]", "him off", "ihn aus");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] .", "ihn auf [X,1] .");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] him [X,2]", "ihn auf [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] him off", "ihn auf [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] him", "ihn auf [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] off .", "ihn auf [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] off", "ihn auf [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] takes [X,2]", "ihn auf [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] takes him", "ihn auf [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "him on [X,1] takes", "ihn auf [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him on [X,1]", "ihn auf [X,1]");
    verifyLine(lines.get(n++), "[X]", "him on yet [X,1] .", "ihn auf und [X,1] .");
    verifyLine(lines.get(n++), "[X]", "him on yet [X,1] him", "ihn auf und [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "him on yet [X,1] off", "ihn auf und [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "him on yet [X,1]", "ihn auf und [X,1]");
    verifyLine(lines.get(n++), "[X]", "him on yet it [X,1]", "ihn auf und es [X,1]");
    verifyLine(lines.get(n++), "[X]", "him on yet it takes", "ihn auf und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "him on yet it", "ihn auf und es");
    verifyLine(lines.get(n++), "[X]", "him on yet", "ihn auf und");
    verifyLine(lines.get(n++), "[X]", "him on", "ihn auf");
    verifyLine(lines.get(n++), "[X]", "him", "ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , [X,2] him", "es [X,1] , [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , [X,2] it", "es [X,1] , [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , [X,2] on", "es [X,1] , [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , [X,2] yet", "es [X,1] , [X,2] und");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , [X,2]", "das [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , [X,2]", "es [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , it [X,2]", "es [X,1] , es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , it sets", "das [X,1] , es setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , it sets", "es [X,1] , es setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , it", "das [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] , it", "es [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] ,", "das [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "it [X,1] ,", "es [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "it [X,1] .", "es [X,1] .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and [X,2] ,", "das [X,1] und [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and [X,2] him", "das [X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and [X,2] it", "das [X,1] und [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and [X,2] sets", "das [X,1] und [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and [X,2]", "das [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and it [X,2]", "das [X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and it mars", "das [X,1] und es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and it", "das [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] and", "das [X,1] und");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him , [X,2]", "das [X,1] ihn , [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him , it", "das [X,1] ihn , es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him ,", "das [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him [X,2] it", "es [X,1] ihn [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him [X,2] sets", "das [X,1] ihn [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him [X,2]", "das [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him [X,2]", "es [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him off .", "es [X,1] ihn aus .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him off", "es [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him on [X,2]", "es [X,1] ihn auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him on yet", "es [X,1] ihn auf und");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him on", "es [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him", "das [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] him", "es [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] ,", "das [X,1] es [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] .", "es [X,1] es [X,2] .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] it", "das [X,1] es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] it", "es [X,1] es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] off", "es [X,1] es [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] on", "es [X,1] es [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] sets", "das [X,1] es [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2] yet", "es [X,1] es [X,2] und");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2]", "das [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it [X,2]", "es [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it mars [X,2]", "das [X,1] es besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it mars him", "das [X,1] es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it mars", "das [X,1] es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it sets [X,2]", "es [X,1] es setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it sets him", "es [X,1] es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it sets", "das [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it sets", "es [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it takes [X,2]", "es [X,1] es f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it takes him", "es [X,1] es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it takes", "es [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it", "das [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] it", "es [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars [X,2] it", "das [X,1] besch\u00E4digt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars [X,2] sets", "das [X,1] besch\u00E4digt [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars [X,2]", "das [X,1] besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars him ,", "das [X,1] besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars him [X,2]", "das [X,1] besch\u00E4digt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars him", "das [X,1] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] mars", "das [X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] off .", "es [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] off", "es [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on [X,2] .", "es [X,1] auf [X,2] .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on [X,2] him", "es [X,1] auf [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on [X,2] off", "es [X,1] auf [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on [X,2] takes", "es [X,1] auf [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on [X,2]", "es [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on yet [X,2]", "es [X,1] auf und [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on yet it", "es [X,1] auf und es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on yet", "es [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "it [X,1] on", "es [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets [X,2] it", "es [X,1] setzt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets [X,2] yet", "es [X,1] setzt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets [X,2]", "es [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets him [X,2]", "es [X,1] setzt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets him on", "es [X,1] setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets him", "es [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets", "das [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] sets", "es [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] takes [X,2] .", "es [X,1] f\u00FChrt [X,2] .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] takes [X,2]", "es [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] takes him [X,2]", "es [X,1] f\u00FChrt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] takes him off", "es [X,1] f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "it [X,1] takes him", "es [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] takes", "es [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet [X,2] .", "es [X,1] und [X,2] .");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet [X,2] him", "es [X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet [X,2] off", "es [X,1] und [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet [X,2]", "es [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet it [X,2]", "es [X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet it takes", "es [X,1] und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet it", "es [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "it [X,1] yet", "es [X,1] und");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "das [X,1]");
    verifyLine(lines.get(n++), "[X]", "it [X,1]", "es [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] , [X,2]", "das macht [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] , it", "das macht [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] ,", "das macht [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] him ,", "das macht [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] him [X,2]", "das macht [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] him", "das macht [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] it [X,2]", "das macht [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] it mars", "das macht [X,1] es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] it sets", "das macht [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] it", "das macht [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] mars [X,2]", "das macht [X,1] besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] mars him", "das macht [X,1] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] mars", "das macht [X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1] sets", "das macht [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "it makes [X,1]", "das macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1] ,", "das macht ihn [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1] him", "das macht ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1] it", "das macht ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1] mars", "das macht ihn [X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1] sets", "das macht ihn [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "it makes him [X,1]", "das macht ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes him and [X,1]", "das macht ihn und [X,1]");
    verifyLine(lines.get(n++), "[X]", "it makes him and it", "das macht ihn und es");
    verifyLine(lines.get(n++), "[X]", "it makes him and", "das macht ihn und");
    verifyLine(lines.get(n++), "[X]", "it makes him", "das macht ihn");
    verifyLine(lines.get(n++), "[X]", "it makes", "das macht");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] him [X,2]", "es besch\u00E4digt [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] him on", "es besch\u00E4digt [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] him", "es besch\u00E4digt [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] it [X,2]", "es besch\u00E4digt [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] it sets", "es besch\u00E4digt [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] it", "es besch\u00E4digt [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] on [X,2]", "es besch\u00E4digt [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] on yet", "es besch\u00E4digt [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] on", "es besch\u00E4digt [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] sets [X,2]", "es besch\u00E4digt [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] sets him", "es besch\u00E4digt [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] sets", "es besch\u00E4digt [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] yet it", "es besch\u00E4digt [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1] yet", "es besch\u00E4digt [X,1] und");
    verifyLine(lines.get(n++), "[X]", "it mars [X,1]", "es besch\u00E4digt [X,1]");
    verifyLine(lines.get(n++), "[X]", "it mars him , [X,1]", "es besch\u00E4digt ihn , [X,1]");
    verifyLine(lines.get(n++), "[X]", "it mars him , it", "es besch\u00E4digt ihn , es");
    verifyLine(lines.get(n++), "[X]", "it mars him ,", "es besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "it mars him [X,1] him", "es besch\u00E4digt ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it mars him [X,1] it", "es besch\u00E4digt ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it mars him [X,1] on", "es besch\u00E4digt ihn [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "it mars him [X,1] sets", "es besch\u00E4digt ihn [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "it mars him [X,1] yet", "es besch\u00E4digt ihn [X,1] und");
    verifyLine(lines.get(n++), "[X]", "it mars him [X,1]", "es besch\u00E4digt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "it mars him", "es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "it mars", "es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] .", "es setzt [X,1] .");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] him [X,2]", "es setzt [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] him off", "es setzt [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] him", "es setzt [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] it [X,2]", "es setzt [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] it takes", "es setzt [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] it", "es setzt [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] off .", "es setzt [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] off", "es setzt [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] takes [X,2]", "es setzt [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] takes him", "es setzt [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] takes", "es setzt [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] yet [X,2]", "es setzt [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] yet it", "es setzt [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1] yet", "es setzt [X,1] und");
    verifyLine(lines.get(n++), "[X]", "it sets [X,1]", "es setzt [X,1]");
    verifyLine(lines.get(n++), "[X]", "it sets him [X,1] .", "es setzt ihn [X,1] .");
    verifyLine(lines.get(n++), "[X]", "it sets him [X,1] him", "es setzt ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "it sets him [X,1] it", "es setzt ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "it sets him [X,1] off", "es setzt ihn [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "it sets him [X,1] takes", "es setzt ihn [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it sets him [X,1]", "es setzt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "it sets him on [X,1]", "es setzt ihn auf [X,1]");
    verifyLine(lines.get(n++), "[X]", "it sets him on yet", "es setzt ihn auf und");
    verifyLine(lines.get(n++), "[X]", "it sets him on", "es setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "it sets him", "es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "it sets", "es setzt");
    verifyLine(lines.get(n++), "[X]", "it takes [X,1] .", "es f\u00FChrt [X,1] .");
    verifyLine(lines.get(n++), "[X]", "it takes [X,1]", "es f\u00FChrt [X,1]");
    verifyLine(lines.get(n++), "[X]", "it takes him [X,1]", "es f\u00FChrt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "it takes him off .", "es f\u00FChrt ihn aus .");
    verifyLine(lines.get(n++), "[X]", "it takes him off", "es f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "it takes him", "es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "it takes", "es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "it", "das");
    verifyLine(lines.get(n++), "[X]", "it", "es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] , [X,2] him", "macht [X,1] , [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] , [X,2]", "macht [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] , it [X,2]", "macht [X,1] , es [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] , it sets", "macht [X,1] , es setzt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] , it", "macht [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] ,", "macht [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him , [X,2]", "macht [X,1] ihn , [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him , it", "macht [X,1] ihn , es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him ,", "macht [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him [X,2] him", "macht [X,1] ihn [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him [X,2] sets", "macht [X,1] ihn [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him [X,2]", "macht [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] him", "macht [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it [X,2] ,", "macht [X,1] es [X,2] ,");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it [X,2] him", "macht [X,1] es [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it [X,2] it", "macht [X,1] es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it [X,2] sets", "macht [X,1] es [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it [X,2]", "macht [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it mars [X,2]", "macht [X,1] es besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it mars him", "macht [X,1] es besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it mars", "macht [X,1] es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it sets him", "macht [X,1] es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it sets", "macht [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] it", "macht [X,1] es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars [X,2] him", "macht [X,1] besch\u00E4digt [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars [X,2] it", "macht [X,1] besch\u00E4digt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars [X,2] sets", "macht [X,1] besch\u00E4digt [X,2] setzt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars [X,2]", "macht [X,1] besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars him ,", "macht [X,1] besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars him [X,2]", "macht [X,1] besch\u00E4digt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars him", "macht [X,1] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] mars", "macht [X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] sets him", "macht [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "makes [X,1] sets", "macht [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "makes [X,1]", "macht [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] , [X,2]", "macht ihn [X,1] , [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] , it", "macht ihn [X,1] , es");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] ,", "macht ihn [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] him ,", "macht ihn [X,1] ihn ,");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] him [X,2]", "macht ihn [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] him", "macht ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] it [X,2]", "macht ihn [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] it sets", "macht ihn [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] it", "macht ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] mars [X,2]", "macht ihn [X,1] besch\u00E4digt [X,2]");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] mars him", "macht ihn [X,1] besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] mars", "macht ihn [X,1] besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] sets him", "macht ihn [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1] sets", "macht ihn [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "makes him [X,1]", "macht ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him and [X,1] ,", "macht ihn und [X,1] ,");
    verifyLine(lines.get(n++), "[X]", "makes him and [X,1] him", "macht ihn und [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "makes him and [X,1] it", "macht ihn und [X,1] es");
    verifyLine(lines.get(n++), "[X]", "makes him and [X,1] sets", "macht ihn und [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "makes him and [X,1]", "macht ihn und [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him and it [X,1]", "macht ihn und es [X,1]");
    verifyLine(lines.get(n++), "[X]", "makes him and it mars", "macht ihn und es besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "makes him and it", "macht ihn und es");
    verifyLine(lines.get(n++), "[X]", "makes him and", "macht ihn und");
    verifyLine(lines.get(n++), "[X]", "makes him", "macht ihn");
    verifyLine(lines.get(n++), "[X]", "makes", "macht");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him [X,2] it", "besch\u00E4digt [X,1] ihn [X,2] es");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him [X,2] takes", "besch\u00E4digt [X,1] ihn [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him [X,2]", "besch\u00E4digt [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him on [X,2]", "besch\u00E4digt [X,1] ihn auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him on yet", "besch\u00E4digt [X,1] ihn auf und");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him on", "besch\u00E4digt [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] him", "besch\u00E4digt [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it [X,2] it", "besch\u00E4digt [X,1] es [X,2] es");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it [X,2] on", "besch\u00E4digt [X,1] es [X,2] auf");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it [X,2] takes", "besch\u00E4digt [X,1] es [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it [X,2] yet", "besch\u00E4digt [X,1] es [X,2] und");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it [X,2]", "besch\u00E4digt [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it sets [X,2]", "besch\u00E4digt [X,1] es setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it sets him", "besch\u00E4digt [X,1] es setzt ihn");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it sets", "besch\u00E4digt [X,1] es setzt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it takes", "besch\u00E4digt [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] it", "besch\u00E4digt [X,1] es");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] on [X,2] takes", "besch\u00E4digt [X,1] auf [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] on [X,2]", "besch\u00E4digt [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] on yet [X,2]", "besch\u00E4digt [X,1] auf und [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] on yet it", "besch\u00E4digt [X,1] auf und es");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] on yet", "besch\u00E4digt [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] on", "besch\u00E4digt [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets [X,2] it", "besch\u00E4digt [X,1] setzt [X,2] es");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets [X,2] takes", "besch\u00E4digt [X,1] setzt [X,2] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets [X,2] yet", "besch\u00E4digt [X,1] setzt [X,2] und");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets [X,2]", "besch\u00E4digt [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets him [X,2]", "besch\u00E4digt [X,1] setzt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets him on", "besch\u00E4digt [X,1] setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets him", "besch\u00E4digt [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] sets", "besch\u00E4digt [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] takes", "besch\u00E4digt [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] yet [X,2]", "besch\u00E4digt [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] yet it takes", "besch\u00E4digt [X,1] und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] yet it", "besch\u00E4digt [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "mars [X,1] yet", "besch\u00E4digt [X,1] und");
    verifyLine(lines.get(n++), "[X]", "mars [X,1]", "besch\u00E4digt [X,1]");
    verifyLine(lines.get(n++), "[X]", "mars him , [X,1] him", "besch\u00E4digt ihn , [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "mars him , [X,1] it", "besch\u00E4digt ihn , [X,1] es");
    verifyLine(lines.get(n++), "[X]", "mars him , [X,1] on", "besch\u00E4digt ihn , [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "mars him , [X,1] takes", "besch\u00E4digt ihn , [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars him , [X,1] yet", "besch\u00E4digt ihn , [X,1] und");
    verifyLine(lines.get(n++), "[X]", "mars him , [X,1]", "besch\u00E4digt ihn , [X,1]");
    verifyLine(lines.get(n++), "[X]", "mars him , it [X,1]", "besch\u00E4digt ihn , es [X,1]");
    verifyLine(lines.get(n++), "[X]", "mars him , it sets", "besch\u00E4digt ihn , es setzt");
    verifyLine(lines.get(n++), "[X]", "mars him , it", "besch\u00E4digt ihn , es");
    verifyLine(lines.get(n++), "[X]", "mars him ,", "besch\u00E4digt ihn ,");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] him [X,2]", "besch\u00E4digt ihn [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] him on", "besch\u00E4digt ihn [X,1] ihn auf");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] him", "besch\u00E4digt ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] it takes", "besch\u00E4digt ihn [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] it", "besch\u00E4digt ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] on [X,2]", "besch\u00E4digt ihn [X,1] auf [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] on yet", "besch\u00E4digt ihn [X,1] auf und");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] on", "besch\u00E4digt ihn [X,1] auf");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] sets [X,2]", "besch\u00E4digt ihn [X,1] setzt [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] sets him", "besch\u00E4digt ihn [X,1] setzt ihn");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] sets", "besch\u00E4digt ihn [X,1] setzt");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] takes", "besch\u00E4digt ihn [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] yet [X,2]", "besch\u00E4digt ihn [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] yet it", "besch\u00E4digt ihn [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1] yet", "besch\u00E4digt ihn [X,1] und");
    verifyLine(lines.get(n++), "[X]", "mars him [X,1]", "besch\u00E4digt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "mars him", "besch\u00E4digt ihn");
    verifyLine(lines.get(n++), "[X]", "mars", "besch\u00E4digt");
    verifyLine(lines.get(n++), "[X]", "off .", "aus .");
    verifyLine(lines.get(n++), "[X]", "off", "aus");
    verifyLine(lines.get(n++), "[X]", "on [X,1] .", "auf [X,1] .");
    verifyLine(lines.get(n++), "[X]", "on [X,1] him [X,2]", "auf [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "on [X,1] him off .", "auf [X,1] ihn aus .");
    verifyLine(lines.get(n++), "[X]", "on [X,1] him off", "auf [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "on [X,1] him", "auf [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "on [X,1] off .", "auf [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "on [X,1] off", "auf [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "on [X,1] takes [X,2] .", "auf [X,1] f\u00FChrt [X,2] .");
    verifyLine(lines.get(n++), "[X]", "on [X,1] takes [X,2]", "auf [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "on [X,1] takes him [X,2]", "auf [X,1] f\u00FChrt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "on [X,1] takes him off", "auf [X,1] f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "on [X,1] takes him", "auf [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "on [X,1] takes", "auf [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "on [X,1]", "auf [X,1]");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1] .", "auf und [X,1] .");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1] him [X,2]", "auf und [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1] him off", "auf und [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1] him", "auf und [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1] off .", "auf und [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1] off", "auf und [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "on yet [X,1]", "auf und [X,1]");
    verifyLine(lines.get(n++), "[X]", "on yet it [X,1] .", "auf und es [X,1] .");
    verifyLine(lines.get(n++), "[X]", "on yet it [X,1] off", "auf und es [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "on yet it [X,1]", "auf und es [X,1]");
    verifyLine(lines.get(n++), "[X]", "on yet it takes [X,1]", "auf und es f\u00FChrt [X,1]");
    verifyLine(lines.get(n++), "[X]", "on yet it takes him", "auf und es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "on yet it takes", "auf und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "on yet it", "auf und es");
    verifyLine(lines.get(n++), "[X]", "on yet", "auf und");
    verifyLine(lines.get(n++), "[X]", "on", "auf");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] .", "setzt [X,1] .");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] him [X,2]", "setzt [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] him off .", "setzt [X,1] ihn aus .");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] him off", "setzt [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] him", "setzt [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it [X,2] .", "setzt [X,1] es [X,2] .");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it [X,2] off", "setzt [X,1] es [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it [X,2]", "setzt [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it takes [X,2]", "setzt [X,1] es f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it takes him", "setzt [X,1] es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it takes", "setzt [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] it", "setzt [X,1] es");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] off .", "setzt [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] off", "setzt [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] takes [X,2] .", "setzt [X,1] f\u00FChrt [X,2] .");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] takes [X,2]", "setzt [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] takes him [X,2]", "setzt [X,1] f\u00FChrt ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] takes him off", "setzt [X,1] f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] takes him", "setzt [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] takes", "setzt [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet [X,2] .", "setzt [X,1] und [X,2] .");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet [X,2] him", "setzt [X,1] und [X,2] ihn");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet [X,2] off", "setzt [X,1] und [X,2] aus");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet [X,2]", "setzt [X,1] und [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet it [X,2]", "setzt [X,1] und es [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet it takes", "setzt [X,1] und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet it", "setzt [X,1] und es");
    verifyLine(lines.get(n++), "[X]", "sets [X,1] yet", "setzt [X,1] und");
    verifyLine(lines.get(n++), "[X]", "sets [X,1]", "setzt [X,1]");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] .", "setzt ihn [X,1] .");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] him [X,2]", "setzt ihn [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] him off", "setzt ihn [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] him", "setzt ihn [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] it [X,2]", "setzt ihn [X,1] es [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] it takes", "setzt ihn [X,1] es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] it", "setzt ihn [X,1] es");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] off .", "setzt ihn [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] off", "setzt ihn [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] takes [X,2]", "setzt ihn [X,1] f\u00FChrt [X,2]");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] takes him", "setzt ihn [X,1] f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1] takes", "setzt ihn [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "sets him [X,1]", "setzt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "sets him on [X,1] .", "setzt ihn auf [X,1] .");
    verifyLine(lines.get(n++), "[X]", "sets him on [X,1] him", "setzt ihn auf [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "sets him on [X,1] off", "setzt ihn auf [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "sets him on [X,1] takes", "setzt ihn auf [X,1] f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "sets him on [X,1]", "setzt ihn auf [X,1]");
    verifyLine(lines.get(n++), "[X]", "sets him on yet [X,1]", "setzt ihn auf und [X,1]");
    verifyLine(lines.get(n++), "[X]", "sets him on yet it", "setzt ihn auf und es");
    verifyLine(lines.get(n++), "[X]", "sets him on yet", "setzt ihn auf und");
    verifyLine(lines.get(n++), "[X]", "sets him on", "setzt ihn auf");
    verifyLine(lines.get(n++), "[X]", "sets him", "setzt ihn");
    verifyLine(lines.get(n++), "[X]", "sets", "setzt");
    verifyLine(lines.get(n++), "[X]", "takes [X,1] .", "f\u00FChrt [X,1] .");
    verifyLine(lines.get(n++), "[X]", "takes [X,1]", "f\u00FChrt [X,1]");
    verifyLine(lines.get(n++), "[X]", "takes him [X,1]", "f\u00FChrt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "takes him off .", "f\u00FChrt ihn aus .");
    verifyLine(lines.get(n++), "[X]", "takes him off", "f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "takes him", "f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "takes", "f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] .", "und [X,1] .");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] him [X,2]", "und [X,1] ihn [X,2]");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] him off .", "und [X,1] ihn aus .");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] him off", "und [X,1] ihn aus");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] him", "und [X,1] ihn");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] off .", "und [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "yet [X,1] off", "und [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "yet [X,1]", "und [X,1]");
    verifyLine(lines.get(n++), "[X]", "yet it [X,1] .", "und es [X,1] .");
    verifyLine(lines.get(n++), "[X]", "yet it [X,1] off .", "und es [X,1] aus .");
    verifyLine(lines.get(n++), "[X]", "yet it [X,1] off", "und es [X,1] aus");
    verifyLine(lines.get(n++), "[X]", "yet it [X,1]", "und es [X,1]");
    verifyLine(lines.get(n++), "[X]", "yet it takes [X,1] .", "und es f\u00FChrt [X,1] .");
    verifyLine(lines.get(n++), "[X]", "yet it takes [X,1]", "und es f\u00FChrt [X,1]");
    verifyLine(lines.get(n++), "[X]", "yet it takes him [X,1]", "und es f\u00FChrt ihn [X,1]");
    verifyLine(lines.get(n++), "[X]", "yet it takes him off", "und es f\u00FChrt ihn aus");
    verifyLine(lines.get(n++), "[X]", "yet it takes him", "und es f\u00FChrt ihn");
    verifyLine(lines.get(n++), "[X]", "yet it takes", "und es f\u00FChrt");
    verifyLine(lines.get(n++), "[X]", "yet it", "und es");
    verifyLine(lines.get(n++), "[X]", "yet", "und");

  }
 
}
TOP

Related Classes of joshua.prefix_tree.ExtractRulesTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.