code: public void addCosts(Costs other) {
  		// ---------- quantifiable costs ----------
  		if (this.networkCost == UNKNOWN || other.networkCost == UNKNOWN) {
  			this.networkCost = UNKNOWN;
  		} else {
  			this.networkCost += other.networkCost;
  		}
  		
  		if (this.diskCost == UNKNOWN || other.diskCost == UNKNOWN) {
  			this.diskCost = UNKNOWN;
  		} else {
  			this.diskCost += other.diskCost;
  		}
  		
  		if (this.cpuCost == UNKNOWN || other.cpuCost == UNKNOWN) {
  			this.cpuCost = UNKNOWN;
  		} else {
  			this.cpuCost += other.cpuCost;
  		}
  		
  		// ---------- heuristic costs ----------
  		
  		this.heuristicNetworkCost += other.heuristicNetworkCost;
  		this.heuristicDiskCost += other.heuristicDiskCost;
  		this.heuristicCpuCost += other.heuristicCpuCost;
  	}
docs: Adds the given costs to these costs. If for one of the different cost components (network, disk),
  the costs are unknown, the resulting costs will be unknown.
  
  @param other The costs to add.