@Override
 public V last() {
   V res = commandExecutor.read(getName(), codec, RedisCommands.LINDEX, getName(), -1);
   if (res == null) {
     throw new NoSuchElementException();
   }
   return res;
 }
 @Override
 public boolean contains(final Object o) {
   return commandExecutor.read(
       getName(),
       codec,
       new SyncOperation<Boolean>() {
         @Override
         public Boolean execute(Codec codec, RedisConnection conn) {
           return binarySearch((V) o, codec, conn).getIndex() >= 0;
         }
       });
 }
 private void loadComparator() {
   commandExecutor.read(
       getName(),
       codec,
       new SyncOperation<Void>() {
         @Override
         public Void execute(Codec codec, RedisConnection conn) {
           loadComparator(conn);
           return null;
         }
       });
 }
 @Override
 public <T> T[] toArray(T[] a) {
   List<V> res = commandExecutor.read(getName(), codec, RedisCommands.LRANGE, getName(), 0, -1);
   return res.toArray(a);
 }
 private V get(final int index) {
   return commandExecutor.read(getName(), codec, RedisCommands.LINDEX, getName(), index);
 }
 @Override
 public int size() {
   return commandExecutor.read(getName(), codec, RedisCommands.LLEN_INT, getName());
 }