@Override
 public SimpleDoubleScore buildPessimisticBound(
     InitializingScoreTrend initializingScoreTrend, SimpleDoubleScore score) {
   InitializingScoreTrendLevel[] trendLevels = initializingScoreTrend.getTrendLevels();
   return SimpleDoubleScore.valueOf(
       0,
       trendLevels[0] == InitializingScoreTrendLevel.ONLY_UP
           ? score.getScore()
           : Double.NEGATIVE_INFINITY);
 }
 @Override
 public SimpleDoubleScore fromLevelNumbers(int initScore, Number[] levelNumbers) {
   if (levelNumbers.length != getLevelsSize()) {
     throw new IllegalStateException(
         "The levelNumbers ("
             + Arrays.toString(levelNumbers)
             + ")'s length ("
             + levelNumbers.length
             + ") must equal the levelSize ("
             + getLevelsSize()
             + ").");
   }
   return SimpleDoubleScore.valueOf(initScore, (Double) levelNumbers[0]);
 }
 @Override
 public SimpleDoubleScore parseScore(String scoreString) {
   return SimpleDoubleScore.parseScore(scoreString);
 }