@Override public OptionalDouble get(LocalDate date) { if (!isEmpty() && !date.isBefore(startDate) && dateCalculation.allowsDate(date)) { int position = dateCalculation.calculatePosition(startDate, date); if (position < points.length) { double value = points[position]; if (isValidPoint(value)) { return OptionalDouble.of(value); } } } return OptionalDouble.empty(); }