private long mutate(Mutator m, String key, int by, long def, int exp)
throws OperationTimeoutException {
final AtomicLong rv=new AtomicLong();
final CountDownLatch latch=new CountDownLatch(1);
addOp(key, opFact.mutate(m, key, by, def, exp, new OperationCallback() {
public void receivedStatus(OperationStatus s) {
// XXX: Potential abstraction leak.
// The handling of incr/decr in the binary protocol
// Allows us to avoid string processing.
rv.set(Long.valueOf(s.isSuccess() ? s.getMessage() : "-1"));