docs: public void setComponent(String component, Variable ... vars) {
  		for (Variable var : vars) {
  			if (var.getComponent() != null && !var.getComponent().equals(component)) {
  				components.get(var.getComponent()).remove(var);
  			}
  		}
  		if (!components.containsKey(component)) components.put(component, new ArrayList<Variable>());
  		for (Variable var : vars) components.get(component).add(var);
  	}
  
  	/**
  	 * Create a batch of new {@link Variable}s for this {@link ConstraintSolver}.
  	 * @param num The number of variables to create.
  	 * @return A batch of new {@link Variable}s.
  	 */
  	public final Variable[] createVariables(int num) {
  		return this.createVariables(num, null);
  	}
  
  	/**
  	 * Create a batch of new {@link Variable}s for this {@link ConstraintSolver}.
  	 * @param num The number of variables to create.
  	 * @param component The component tag to associate to these new variables.
  	 * @return A batch of new {@link Variable}s.
  	 */
  	public final Variable[] createVariables(int num, String component) {
  		Variable[] ret = createVariablesSub(num, component);
  		if (ret == null) return null;
  		//need to add all to network so if sth goes wrong I can delete all of them concurrently
  		for (Variable v : ret) this.theNetwork.addVariable(v);
  		if (!skipPropagation && autoprop && checkDomainsInstantiated() && !noPropOnVarCreation) this.propagate();
  		logger.finest("Created variables " + Arrays.toString(ret));
  		return ret;
  	}