private void executeCommandFromLocalCluster(
     final ReplicableCommand cmd, final Message req, final org.jgroups.blocks.Response response)
     throws Throwable {
   handler.handleFromCluster(
       fromJGroupsAddress(req.getSrc()),
       cmd,
       new Reply() {
         @Override
         public void reply(Object returnValue) {
           CommandAwareRpcDispatcher.this.reply(response, returnValue);
         }
       },
       decodeDeliverMode(req));
 }
 private void executeCommandFromRemoteSite(
     final ReplicableCommand cmd, final Message req, final org.jgroups.blocks.Response response)
     throws Throwable {
   SiteAddress siteAddress = (SiteAddress) req.getSrc();
   ((XSiteReplicateCommand) cmd).setOriginSite(siteAddress.getSite());
   handler.handleFromRemoteSite(
       siteAddress.getSite(),
       (XSiteReplicateCommand) cmd,
       new Reply() {
         @Override
         public void reply(Object returnValue) {
           CommandAwareRpcDispatcher.this.reply(response, returnValue);
         }
       },
       decodeDeliverMode(req));
 }