Generate a MongoDB update document through paramater interpolation.
	
	Arguments passed by name have their name interpreted as an optional operation prefix (defaulting to `set`, e.g.
	`push`), a double-underscore separated field reference (e.g. `foo`, or `foo__bar`, or `foo__S__bar`, or
	`foo__27__bar`)
	
	Because this utility is likely going to be used frequently it has been given a single-character name.

def U(Document, __raw__=None, **update):
	"""Generate a MongoDB update document through paramater interpolation.
	
	Arguments passed by name have their name interpreted as an optional operation prefix (defaulting to `set`, e.g.
	`push`), a double-underscore separated field reference (e.g. `foo`, or `foo__bar`, or `foo__S__bar`, or
	`foo__27__bar`)
	
	Because this utility is likely going to be used frequently it has been given a single-character name.
	"""
	
	ops = Update(__raw__)
	args = _process_arguments(Document, UPDATE_ALIASES, {}, update, UPDATE_PASSTHROUGH)
	
	for operation, _, field, value in args:
		if not operation:
			operation = DEFAULT_UPDATE
		
		if isinstance(operation, tuple):
			operation, cast = ('$' + operation[0]), operation[1]
			if cast in UPDATE_MAGIC:
				value = cast(value, field)
			else:
				value = cast(value)
			
			if operation in ops and ~field in ops[operation] and isinstance(value, Mapping):
				ops[operation][~field].update(value)
				continue
		
		else:
			operation = '$' + operation
		
		ops &= Update({operation: {~field: value}})
	
	return ops