/** @return Reentry candidate. */
  public GridCacheMvccCandidate<K> reenter() {
    GridCacheMvccCandidate<K> old = reentry;

    GridCacheMvccCandidate<K> reentry =
        new GridCacheMvccCandidate<>(
            parent,
            nodeId,
            otherNodeId,
            otherVer,
            threadId,
            ver,
            timeout,
            local(),
            /*reentry*/ true,
            tx(),
            singleImplicit(),
            nearLocal(),
            dhtLocal());

    reentry.topVer = topVer;

    if (old != null) reentry.reentry = old;

    this.reentry = reentry;

    return reentry;
  }