ChangeSet extends Change { @Override public boolean isFileContentChange() { return myChanges.size() == 1 && myChanges.get(0).isFileContentChange(); } ChangeSet(long timestamp, String name, List<Change> changes);  ChangeSet(long timestamp);  ChangeSet(Stream s); void write(Stream s); void setName(String name); @Override String getName(); @Override long getTimestamp(); void addChange(Change c); @Override List<Change> getChanges(); @Override void applyTo(Entry r); @Override boolean revertOnUpTo(Entry r, Change upTo, boolean revertTargetChange); @Override boolean affectsSameAs(List<Change> cc); @Override boolean affectsOnlyInside(Entry e); @Override boolean isCreationalFor(Entry e); @Override List<Content> getContentsToPurge(); @Override boolean isFileContentChange(); @Override void accept(ChangeVisitor v);  }
@Test public void testIsFileContentChange() { assertFalse(cs(new CreateFileChange(1, "f", null, -1, false)).isFileContentChange()); assertTrue(cs(new ContentChange("f", null, -1)).isFileContentChange()); assertFalse(cs(new ContentChange("f1", null, -1), new ContentChange("f2", null, -1)).isFileContentChange()); assertFalse(cs(new CreateFileChange(1, "f1", null, -1, false), new ContentChange("f2", null, -1)).isFileContentChange()); }