static <T extends Comparable<? super T>> int compareListWithFillValue(
      List<T> left, List<T> right, T fillValue) {
    int longest = Math.max(left.size(), right.size());
    for (int i = 0; i < longest; i++) {
      T leftElement = fillValue;
      T rightElement = fillValue;

      if (i < left.size()) {
        leftElement = left.get(i);
      }
      if (i < right.size()) {
        rightElement = right.get(i);
      }

      int compareResult = leftElement.compareTo(rightElement);
      if (compareResult != 0) {
        return compareResult;
      }
    }

    return 0;
  }
@Test
  public void compareWithFillValue_nonEmptyListVariedSizeWithPositiveFillValue_returnsPositive() {
    assertThat(
            ComparisonUtility.compareListWithFillValue(
                Lists.newArrayList(1, 2), Lists.newArrayList(1, 2, 3), 100))
        .isGreaterThan(0);
  }