### Question:
WindowingEventChanges implements WindowingChanges<WindowingEvent>, Serializable { @Override public int sumOfChanges() { return additions.size() + changes.size() + deletions.size(); } private  WindowingEventChanges(Set<WindowingEvent> deletions, Set<WindowingEvent> changes, Set<WindowingEvent> additions); static WindowingEventChanges empty(); static Builder builder(); @Override Set<WindowingEvent> deletions(); @Override Set<WindowingEvent> changes(); @Override Set<WindowingEvent> additions(); @Override int sumOfChanges(); @Override final int hashCode(); @Override final boolean equals(Object obj); @Override String toString();  }### Answer:
@Test public void sumOfChanges() { WindowingEvent change = WindowingEvent.builder().uid(1).applicationData(new MSEvent()).build(); WindowingEvent deletion = WindowingEvent.builder().uid(2).applicationData(new MSEvent()).build(); WindowingEvent addition = WindowingEvent.builder().uid(3).applicationData(new MSEvent()).build(); Builder emailChanges = WindowingEventChanges.builder() .changes(ImmutableSet.<WindowingEvent>of(change)) .deletions(ImmutableSet.<WindowingEvent>of(deletion)) .additions(ImmutableSet.<WindowingEvent>of(addition)); assertThat(emailChanges.sumOfChanges()).isEqualTo(3); }