### Question:
RatesCurveGroupDefinition implements CurveGroupDefinition, ImmutableBean, Serializable { public static RatesCurveGroupDefinition of( CurveGroupName name, Collection<RatesCurveGroupEntry> entries, Collection<CurveDefinition> curveDefinitions) { return new RatesCurveGroupDefinition(name, entries, curveDefinitions, ImmutableMap.of(), true, false); } @ImmutableConstructor  RatesCurveGroupDefinition(
      CurveGroupName name,
      Collection<RatesCurveGroupEntry> entries,
      Collection<? extends CurveDefinition> curveDefinitions,
      Map<CurveName, SeasonalityDefinition> seasonalityDefinitions,
      boolean computeJacobian,
      boolean computePvSensitivityToMarketQuote); static RatesCurveGroupDefinitionBuilder builder(); static RatesCurveGroupDefinition of(
      CurveGroupName name,
      Collection<RatesCurveGroupEntry> entries,
      Collection<CurveDefinition> curveDefinitions); static RatesCurveGroupDefinition of(
      CurveGroupName name,
      Collection<RatesCurveGroupEntry> entries,
      Collection<CurveDefinition> curveDefinitions,
      Map<CurveName, SeasonalityDefinition> seasonalityDefinitions); @Override RatesCurveGroupId createGroupId(ObservableSource source); RatesCurveGroupDefinition filtered(LocalDate valuationDate, ReferenceData refData); RatesCurveGroupDefinition bindTimeSeries(LocalDate valuationDate, Map<Index, LocalDateDoubleTimeSeries> tsMap); Optional<CurveName> findDiscountCurveName(Currency discountCurrency); Optional<CurveName> findForwardCurveName(Index forwardIndex); ImmutableSet<CurveName> findForwardCurveNames(FloatingRateName forwardName); Optional<RatesCurveGroupEntry> findEntry(CurveName curveName); Optional<CurveDefinition> findCurveDefinition(CurveName curveName); ImmutableList<CurveMetadata> metadata(LocalDate valuationDate, ReferenceData refData); int getTotalParameterCount(); ImmutableList<ResolvedTrade> resolvedTrades(MarketData marketData, ReferenceData refData); ImmutableList<Double> initialGuesses(MarketData marketData); RatesCurveGroupDefinition withCurveDefinitions(List<CurveDefinition> curveDefinitions); RatesCurveGroupDefinition withSeasonalityDefinitions(Map<CurveName, SeasonalityDefinition> seasonalityDefinitions); RatesCurveGroupDefinition withName(CurveGroupName name); RatesCurveGroupDefinition combinedWith(RatesCurveGroupDefinition other); RatesCurveGroupDefinitionBuilder toBuilder(); static RatesCurveGroupDefinition.Meta meta(); @Override RatesCurveGroupDefinition.Meta metaBean(); @Override CurveGroupName getName(); ImmutableList<RatesCurveGroupEntry> getEntries(); ImmutableList<CurveDefinition> getCurveDefinitions(); ImmutableMap<CurveName, SeasonalityDefinition> getSeasonalityDefinitions(); boolean isComputeJacobian(); boolean isComputePvSensitivityToMarketQuote(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_missingEntries() { assertThatIllegalArgumentException() .isThrownBy(() -> RatesCurveGroupDefinition.of( CurveGroupName.of("group"), ImmutableList.of(ENTRY1), ImmutableList.of(CURVE_DEFN1, CURVE_DEFN2))) .withMessageMatching("An entry must be provided .* \\[Test2\\]"); }