/** {@inheritDoc} */
  @Override
  protected GridFuture<Boolean> lockAllAsync(
      Collection<? extends K> keys,
      long timeout,
      GridCacheTxLocalEx<K, V> tx,
      boolean isInvalidate,
      boolean isRead,
      boolean retval,
      GridCacheTxIsolation isolation,
      GridPredicate<? super GridCacheEntry<K, V>>[] filter) {
    GridNearLockFuture<K, V> fut =
        new GridNearLockFuture<K, V>(
            ctx, keys, (GridNearTxLocal<K, V>) tx, isRead, retval, timeout, filter);

    if (!ctx.mvcc().addFuture(fut)) throw new IllegalStateException("Duplicate future ID: " + fut);

    fut.map();

    return fut;
  }