public Object visitGetKeyValueCommand(InvocationContext ctx, GetKeyValueCommand command) throws Throwable {
Object returnValue = invokeNextInterceptor(ctx, command);
if (returnValue == null) {
// attempt a remote lookup
// TODO update ClusteredGetCommand (maybe a new command?) to ensure we get back ICEs.
ClusteredGetCommand get = cf.buildClusteredGetCommand(command.getKey());
// TODO use a RspFilter to filter responses
List<Response> responses = rpcManager.invokeRemotely(dm.locate(command.getKey()), get, ResponseMode.SYNCHRONOUS,
configuration.getSyncReplTimeout(), false, false);
// the first response is all that matters