public static class Parts { private final Optional finalAggregation; private final Optional intermediateAggregation; private final StatisticAggregations partialAggregation; public Parts( Optional finalAggregation, Optional intermediateAggregation, StatisticAggregations partialAggregation) { this.finalAggregation = requireNonNull(finalAggregation, "finalAggregation is null"); this.intermediateAggregation = requireNonNull(intermediateAggregation, "intermediateAggregation is null"); this.partialAggregation = requireNonNull(partialAggregation, "partialAggregation is null"); } public StatisticAggregations getFinalAggregation() { return finalAggregation.orElseThrow(() -> new IllegalStateException("finalAggregation is not present")); } public StatisticAggregations getIntermediateAggregation() { return intermediateAggregation.orElseThrow(() -> new IllegalStateException("intermediateAggregation is not present")); } public StatisticAggregations getPartialAggregation() { return partialAggregation; } }