@Override
  public <T> int score(List<T> left, List<T> right) {
    if (left.isEmpty() && right.isEmpty()) {
      return 0;
    }
    int distance = levenshteinDistance(left, right);
    return (int) (100 * (1.0 - ((double) distance) / (max(left.size(), right.size()))));
  }
@Test
  public void finding_threshold_in_line_count_to_go_below_85_score() {
    assertThat(underTest.score(listOf(100), listOf(115))).isEqualTo(86);
    assertThat(underTest.score(listOf(100), listOf(116))).isEqualTo(86);
    assertThat(underTest.score(listOf(100), listOf(117))).isEqualTo(85); // 85.47% - 117%
    assertThat(underTest.score(listOf(100), listOf(118))).isEqualTo(84); // 84.74% - 118%

    assertThat(underTest.score(listOf(50), listOf(58))).isEqualTo(86); // 86.20% - 116%
    assertThat(underTest.score(listOf(50), listOf(59))).isEqualTo(84); // 84.74% - 118%

    assertThat(underTest.score(listOf(25), listOf(29))).isEqualTo(86); // 86.20% - 116%
    assertThat(underTest.score(listOf(25), listOf(30))).isEqualTo(83); // 83.33% - 120%

    assertThat(underTest.score(listOf(12), listOf(14))).isEqualTo(85); // 85.71% - 116.67%
    assertThat(underTest.score(listOf(12), listOf(15))).isEqualTo(80); // 80.00% - 125%

    assertThat(underTest.score(listOf(10), listOf(11))).isEqualTo(90); // 90.90% - 110%
    assertThat(underTest.score(listOf(10), listOf(12))).isEqualTo(83); // 83.33% - 120%

    assertThat(underTest.score(listOf(5), listOf(5))).isEqualTo(100); // 100% - 100%
    assertThat(underTest.score(listOf(5), listOf(6))).isEqualTo(83); // 83.33% - 120%

    assertThat(underTest.score(listOf(200), listOf(234))).isEqualTo(85); // 85.47% - 117%
    assertThat(underTest.score(listOf(200), listOf(236))).isEqualTo(84); // 84.75% - 118%

    assertThat(underTest.score(listOf(300), listOf(352))).isEqualTo(85); // 85.23% - 117.33%
    assertThat(underTest.score(listOf(300), listOf(354))).isEqualTo(84); // 84.74% - 118%

    assertThat(underTest.score(listOf(400), listOf(470))).isEqualTo(85); // 85.10% - 117.50%
    assertThat(underTest.score(listOf(400), listOf(471))).isEqualTo(84); // 84.92% - 117.75%

    assertThat(underTest.score(listOf(500), listOf(588))).isEqualTo(85); // 85.03% - 117.60%
    assertThat(underTest.score(listOf(500), listOf(589))).isEqualTo(84); // 84.88% - 117.80%
  }