code: public void waitFor(Integer clientId, int turns, String reason) {
  	// for safety, check if we know the robot, otherwise fail
  	if (!registered.contains(clientId)) {
  	    throw new IllegalArgumentException("Unknown robot. All robots must first register with clock");
  	}
  
  	synchronized (waitingList) {
  
  	    if (waitingList.contains(clientId)) {
  		throw new IllegalArgumentException("Client " + clientId
  			+ " is already waiting, no multithreading is allowed");
  	    }
  
  	    waitingList.add(clientId);
  	}
  
  	// we are in the robot's thread
  
  	log.trace("[waitFor] Blocking {} for {} turns. Reason: {}", clientId, turns, reason);
  	blockMe(turns);
  	log.trace("[waitFor] Unblocked {} - {}", clientId, reason);
  
  	synchronized (waitingList) {
  	    waitingList.remove(clientId);
  	}
  
      }
docs: Blocks the calling thread for the specified number of cycles
  
  @param clientId unique ID of the client.
  @param turns the number of clock ticks to block
  @param reason explanation for the wait