code: function mergeObjects(provided, overrides, defaults)
  {
  	var rv, k;
  
  	rv = {};
  	if (defaults) {
  		for (k in defaults)
  			rv[k] = defaults[k];
  	}
  
  	if (provided) {
  		for (k in provided)
  			rv[k] = provided[k];
  	}
  
  	if (overrides) {
  		for (k in overrides)
  			rv[k] = overrides[k];
  	}
  
  	return (rv);
  }
docs: /*
  Given three sets of properties "provided" (may be undefined), "overrides"
  (required), and "defaults" (may be undefined), construct an object containing
  the union of these sets with "overrides" overriding "provided", and
  "provided" overriding "defaults".  None of the input objects are modified.