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