/** @return Key. */
  public K key() {
    GridCacheEntryEx<K, ?> parent0 = parent;

    if (parent0 == null)
      throw new IllegalStateException(
          "Parent entry was not initialized for MVCC candidate: " + this);

    return parent0.key();
  }
  /** {@inheritDoc} */
  @Override
  public String toString() {
    GridCacheMvccCandidate<?> prev = previous();
    GridCacheMvccCandidate<?> next = next();

    return S.toString(
        GridCacheMvccCandidate.class,
        this,
        "key",
        parent == null ? null : parent.key(),
        "masks",
        Mask.toString(flags()),
        "prevVer",
        (prev == null ? null : prev.version()),
        "nextVer",
        (next == null ? null : next.version()));
  }