code: public final <T> boolean cas(String key, final int exp, final CASOperation<T> operation,
        final Transcoder<T> transcoder)
        throws TimeoutException, InterruptedException, MemcachedException {
      key = this.preProcessKey(key);
      byte[] keyBytes = ByteUtils.getBytes(key);
      ByteUtils.checkKey(keyBytes);
      GetsResponse<T> result = this.gets0(key, keyBytes, transcoder);
      return this.cas0(key, exp, result, operation, transcoder, keyBytes, false);
    }
docs: /*
  (non-Javadoc)
  
  @see net.rubyeye.xmemcached.MemcachedClient#cas(java.lang.String, int,
  net.rubyeye.xmemcached.CASOperation, net.rubyeye.xmemcached.transcoders.Transcoder)