code: @Override
  	public void monitorTarget(ResourceID resourceID, HeartbeatTarget<O> heartbeatTarget) {
  		if (!stopped) {
  			if (heartbeatTargets.containsKey(resourceID)) {
  				log.debug("The target with resource ID {} is already been monitored.", resourceID);
  			} else {
  				HeartbeatManagerImpl.HeartbeatMonitor<O> heartbeatMonitor = new HeartbeatManagerImpl.HeartbeatMonitor<>(
  					resourceID,
  					heartbeatTarget,
  					scheduledExecutor,
  					heartbeatListener,
  					heartbeatTimeoutIntervalMs);
  
  				heartbeatTargets.put(
  					resourceID,
  					heartbeatMonitor);
  
  				// check if we have stopped in the meantime (concurrent stop operation)
  				if (stopped) {
  					heartbeatMonitor.cancel();
  
  					heartbeatTargets.remove(resourceID);
  				}
  			}
  		}
  	}
docs: ----------------------------------------------------------------------------------------------