class Build::Environment

def update_hash(hash)

def update_hash(hash)
	@values.each do |key, value|
		previous = hash[key]
		
		if Replace === value
			# Replace the parent value
			hash[key] = value
		elsif Default === value
			# Update the parent value if not defined.
			hash[key] = previous || value
		elsif Array === previous
			# Merge with the parent value
			hash[key] = previous + Array(value)
		elsif OpenStruct === value
			hash[key] = value.to_h
		else
			hash[key] = value
		end
	end
	
	return self
end