TableLineBuilder { public <T extends Enum<T>> TableLineBuilder withEnumCount( String statName, Map<T, Integer> countByEnum, Class<T> clazz) { for (T enumValue : clazz.getEnumConstants()) { withInt( enumValue.toString() + "_" + statName, countByEnum.getOrDefault(enumValue, 0)); } return this; }  TableLineBuilder withInt(String columnHeader, Integer value); TableLineBuilder withLong(String columnHeader, Long value); TableLineBuilder withId(String columnHeader, Id<?> id); TableLineBuilder withStringId(String columnHeader, StringId<?> id); TableLineBuilder withDouble(String columnHeader, Double value); TableLineBuilder withBoolean(String columnHeader, Boolean value); TableLineBuilder withTime(String columnHeader, LocalDateTime value); TableLineBuilder withString(String columnHeader, String value); TableLineBuilder withEnumValue(String columnHeader, T enumValue); TableLineBuilder withEnumCount(
            String statName,
            Map<T, Integer> countByEnum,
            Class<T> clazz); TableLineBuilder withTableEnumCount(
            String statName,
            Table<R, C, Integer> countTable,
            Class<R> rowClass,
            Class<C> columnClass); TableLineBuilder withExtension(TableLineExtender extender); TableLine build();  }
@Test void testWithEnumCount() { ImmutableMap<TestEnum, Integer> testEnumCount = ImmutableMap.of(TestEnum.PRESENT_ELEMENTS, 1); TableLine tableLine = builder .withEnumCount("COUNT", testEnumCount, TestEnum.class) .build(); TableLine expectedTableLine = new TableLine(ImmutableMap.of( "PRESENT_ELEMENTS_COUNT", "1", "MISSING_ELEMENTS_COUNT", "0"), ImmutableSet.of()); Assertions.assertEquals(expectedTableLine.getLineMap(), tableLine.getLineMap()); }