code: public IData getData(final long pDataKey) throws TTIOException {
          checkArgument(pDataKey >= 0);
          checkState(!mClose, "Transaction already closed");
          // Calculate bucket and data part for given datakey.
          final long seqBucketKey = pDataKey >> IConstants.INDIRECT_BUCKET_COUNT[3];
          final int dataBucketOffset = dataBucketOffset(pDataKey);
          DataBucket bucket = mCache.getIfPresent(seqBucketKey);
          if (bucket == null) {
              final List<DataBucket> listRevs = getSnapshotBuckets(seqBucketKey);
              final DataBucket[] revs = listRevs.toArray(new DataBucket[listRevs.size()]);
              checkState(revs.length > 0, "Number of Buckets to reconstruct must be larger than 0");
              // Build up the complete bucket.
              final IRevisioning revision = mSession.getConfig().mRevision;
              bucket = revision.combineBuckets(revs);
              mCache.put(seqBucketKey, bucket);
          }
          final IData returnVal = bucket.getData(dataBucketOffset);
          // root-fsys is excluded from the checkagainst deletion based on the necesssity of the data-layer to
          // reference against this data while creation of the transaction
          if (pDataKey == 0) {
              return returnVal;
          } else {
              return checkItemIfDeleted(returnVal);
          }
  
      }
docs: Getting the data related to the given data key.
  
  @param pDataKey
  searched for
  @return the related data
  @throws TTIOException
  if the read to the persistent storage fails