UpdateOp { public Map<Key, Operation> getChanges() { return changes; } UpdateOp(@NotNull String id, boolean isNew);   UpdateOp(@NotNull String id,
             boolean isNew,
             boolean isDelete,
             @NotNull Map<Key, Operation> changes,
             @Nullable Map<Key, Condition> conditions); UpdateOp shallowCopy(String id); UpdateOp copy(); @NotNull String getId(); boolean isNew(); void setNew(boolean isNew); Map<Key, Operation> getChanges(); Map<Key, Condition> getConditions(); boolean hasChanges(); void remove(@NotNull String property); void removeMapEntry(@NotNull String property, @NotNull Revision revision); void set(String property, long value); void set(String property, boolean value); void set(String property, String value); void increment(@NotNull String property, long value); UpdateOp getReverseOperation(); @Override String toString();  }
@Test public void getChanges() { UpdateOp op = new UpdateOp("id", false); assertEquals(0, op.getChanges().size()); assertTrue(!op.hasChanges()); op.set("p", "value"); assertEquals(1, op.getChanges().size()); assertTrue(op.hasChanges()); }