code: @Override
  	public Action getAction(String name, String nodeID) {
  		Strategy<ActionEndpoint> strategy = null;
  		long stamp = lock.tryOptimisticRead();
  		if (stamp != 0) {
  			try {
  				strategy = strategies.get(name);
  			} catch (Exception modified) {
  				stamp = 0;
  			}
  		}
  		if (!lock.validate(stamp) || stamp == 0) {
  			stamp = lock.readLock();
  			try {
  				strategy = strategies.get(name);
  			} finally {
  				lock.unlockRead(stamp);
  			}
  		}
  		if (strategy == null) {
  			throw new ServiceNotFoundError(nodeID, name);
  		}
  		ActionEndpoint endpoint = strategy.getEndpoint(nodeID);
  		if (endpoint == null) {
  			throw new ServiceNotAvailableError(nodeID, name);
  		}
  		return endpoint;
  	}
docs: --- GET LOCAL OR REMOTE ACTION ---