@Override
    public Map<Errors, Integer> errorCounts() {
        Map<Errors, Integer> errorCounts = new HashMap<>();
        updateErrorCounts(errorCounts, Errors.forCode(data.errorCode()));
        for (UpdatableFeatureResult result : data.results()) {
            updateErrorCounts(errorCounts, Errors.forCode(result.errorCode()));
        }
        return errorCounts;
    }
@Test
    public void testErrorCounts() {
        UpdateFeaturesResponseData.UpdatableFeatureResultCollection results =
            new UpdateFeaturesResponseData.UpdatableFeatureResultCollection();

        results.add(new UpdateFeaturesResponseData.UpdatableFeatureResult()
            .setFeature("foo")
            .setErrorCode(Errors.UNKNOWN_SERVER_ERROR.code())
        );

        results.add(new UpdateFeaturesResponseData.UpdatableFeatureResult()
            .setFeature("bar")
            .setErrorCode(Errors.UNKNOWN_SERVER_ERROR.code())
        );

        results.add(new UpdateFeaturesResponseData.UpdatableFeatureResult()
            .setFeature("baz")
            .setErrorCode(Errors.FEATURE_UPDATE_FAILED.code())
        );

        UpdateFeaturesResponse response = new UpdateFeaturesResponse(new UpdateFeaturesResponseData()
            .setErrorCode(Errors.INVALID_REQUEST.code())
            .setResults(results)
        );

        Map<Errors, Integer> errorCounts = response.errorCounts();
        assertEquals(3, errorCounts.size());
        assertEquals(1, errorCounts.get(Errors.INVALID_REQUEST).intValue());
        assertEquals(2, errorCounts.get(Errors.UNKNOWN_SERVER_ERROR).intValue());
        assertEquals(1, errorCounts.get(Errors.FEATURE_UPDATE_FAILED).intValue());
    }