// builds node times from node dates private DoubleArray buildNodeTimes(LocalDate valuationDate, CurveMetadata metadata) { if (metadata.XValueType.Equals(ValueType.YEAR_FRACTION)) { return(DoubleArray.of(ParameterCount, i => { LocalDate nodeDate = ((DatedParameterMetadata)metadata.ParameterMetadata.get().get(i)).Date; return DayCount.get().yearFraction(valuationDate, nodeDate); })); } else if (metadata.XValueType.Equals(ValueType.MONTHS)) { return(DoubleArray.of(ParameterCount, i => { LocalDate nodeDate = ((DatedParameterMetadata)metadata.ParameterMetadata.get().get(i)).Date; return YearMonth.from(valuationDate).until(YearMonth.from(nodeDate), MONTHS); })); } else { throw new System.ArgumentException("Metadata XValueType should be YearFraction or Months in curve definition"); } }