I've applied the same technique to makePayloadOperations to slightly reduce the request payload size (by removing false-positives in property changes), as it's causing issues in our app. It still, IMO, sends too many things in a request (every proxy referenced by another proxy, even if not touched at all –because of the auto-edit done in cloneBeanAndCollections–, this can cause huge payloads for ValueProxy, and leads to unnecessary work done on the server-side –reconstruct the proxy, validate it, and throw it away–, which could possibly impact the billing on AppEngine or other similarly-billed hosting).
BTW, the only alternative I can think of to this "nullify request-context state before diff'ing" approach would be to pass an Equivalence (similar to Guava's Equivalence) to AutoBeanUtils.diff() so we could compare entity-proxies solely by their stableId. It means collections could no longer be compared using equals() but would have to use the sameOrEquals() "deep-equality" path. http://gwt-code-reviews.appspot.com/1601806/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors