code: @Override
  	public Service getService(String name) {
  		Service service = null;
  		long stamp = lock.tryOptimisticRead();
  		if (stamp != 0) {
  			try {
  				service = services.get(name);
  			} catch (Exception modified) {
  				stamp = 0;
  			}
  		}
  		if (!lock.validate(stamp) || stamp == 0) {
  			stamp = lock.readLock();
  			try {
  				service = services.get(name);
  			} finally {
  				lock.unlockRead(stamp);
  			}
  		}
  		if (service == null) {
  			throw new ServiceNotFoundError(nodeID, name);
  		}
  		return service;
  	}
docs: --- GET LOCAL SERVICE ---