public void testDefaultTerminators() {
    char[] terminators = GeneralizedSuffixTree.getDefaultTerminators(2);
    assertEquals(2, terminators.length);
    assertEquals('\ud800', terminators[0]);
    assertEquals('\ud801', terminators[1]);

    GeneralizedSuffixTree gst = new GeneralizedSuffixTree(new String[] {"abab", "baba"});
    TestHelper.dumpEdges(gst.getSuffixTree());
    assertEquals("aba", gst.getLcsAsString());

    gst = new GeneralizedSuffixTree(new String[] {"abababcdab", "abbbabceab"});

    GeneralizedSuffixTree.CommonSubstr commonSubstr = gst.getLcs();
    assertNotNull(commonSubstr);
    assertEquals(3, commonSubstr.getBeginIndexes()[0]);
    assertEquals(6, commonSubstr.getEndIndexes()[0]);
    assertEquals(14, commonSubstr.getBeginIndexes()[1]);
    assertEquals(17, commonSubstr.getEndIndexes()[1]);

    int[] beginIndexes = gst.incIndexes(commonSubstr.getEndIndexes());
    commonSubstr = gst.getLcs(gst.getDefaultBeginIndexes(), commonSubstr.getBeginIndexes());
    assertNotNull(commonSubstr);
    assertEquals(0, commonSubstr.getBeginIndexes()[0]);
    assertEquals(1, commonSubstr.getEndIndexes()[0]);
    assertEquals(11, commonSubstr.getBeginIndexes()[1]);
    assertEquals(12, commonSubstr.getEndIndexes()[1]);

    commonSubstr = gst.getLcs(beginIndexes, gst.getDefaultEndIndexes());
    assertNotNull(commonSubstr);
    assertEquals(8, commonSubstr.getBeginIndexes()[0]);
    assertEquals(9, commonSubstr.getEndIndexes()[0]);
    assertEquals(19, commonSubstr.getBeginIndexes()[1]);
    assertEquals(20, commonSubstr.getEndIndexes()[1]);

    List<GeneralizedSuffixTree.CommonSubstr> list = gst.diff();
    assertEquals(3, list.size());

    for (GeneralizedSuffixTree.CommonSubstr cs : list) {
      System.out.print(
          "abababcdab".substring(cs.getBeginIndexes()[0], cs.getEndIndexes()[0]) + " ");
    }
    System.out.println();
  }