public TXStateInterface getRealDeal(DistributedMember t) {
    assert t != null;
    if (realDeal == null) {
      target = t;
      if (target.equals(getCache().getDistributedSystem().getDistributedMember())) {
        realDeal = new TXState(this, false, statisticsClock);
      } else {
        /*
         * txtodo: // what to do!! We don't know if this is client or server!!!
         */
        realDeal = new PeerTXStateStub(this, target, onBehalfOfClientMember);
      }
      if (logger.isDebugEnabled()) {
        logger.debug("Built a new TXState: {} me:{}", realDeal, txMgr.getDM().getId());
      }
    }
    return realDeal;
  }
This returns either the TXState for the current transaction or a proxy for the state if it is
held in another member. If no state currently exists, one is created

@param key the key of the entry that is currently being modified
@param r the region that is currently being modified
@return the state or a proxy for the state
geode-core/src/main/java/org/apache/geode/internal/cache/TXStateProxyImpl.java