def _replace_te_arguments (_routine, _parent_tracer, _parent_enforcer) :
	
	# ---- coercing routine
	if inspect.ismethod (_routine) :
		_routine = _routine.im_func
	
	# ---- determining arguments
	_tracer_index = None
	_enforcer_index = None
	_argspec = inspect.getargspec (_routine)
	if _argspec.defaults is not None :
		_default_offset = len (_argspec.args) - len (_argspec.defaults)
		for _default_index in xrange (len (_argspec.defaults)) :
			_argument_index = _default_offset + _default_index
			if _argspec.defaults[_default_index] is tracer :
				if _tracer_index is not None :
					raise Exception ('wtf! (duplicate `tracer` was found `%s` and `%s`)' % (_argspec.args[_tracer_index], _argspec.args[_argument_index]))
				if hasattr (_routine, _argspec.args[_argument_index]) :
					raise Exception ('wtf! (`tracer` attribute already exists)')
				_tracer_index = _argument_index
			if _argspec.defaults[_default_index] is enforcer :
				if _enforcer_index is not None :
					raise Exception ('wtf! (duplicate `enforcer` was found `%s` and `%s`)' % (_argspec.args[_enforcer_index], _argspec.args[_argument_index]))
				if hasattr (_routine, _argspec.args[_argument_index]) :
					raise Exception ('wtf! (`enforcer` attribute already exists)')
				_enforcer_index = _argument_index
	
	# ---- creating objects
	if _tracer_index is not None :
		_tracer = transcripts.tracer_tf (_routine, parent = _parent_tracer)
	if _enforcer_index is not None :
		_enforcer = enforcements.enforcer_ef (_routine, parent = _parent_enforcer)
	
	# ---- re-creating defaults
	if _tracer_index is not None or _enforcer_index is not None :
		_defaults = list (_argspec.defaults)
		if _tracer_index is not None :
			_defaults[_tracer_index - _default_offset] = _tracer
		if _enforcer_index is not None :
			_defaults[_enforcer_index - _default_offset] = _enforcer
		_routine.func_defaults = tuple (_defaults)
	
	# ---- setting attributes
	if _tracer_index is not None :
		setattr (_routine, _argspec.args[_tracer_index], _tracer)
	if _enforcer_index is not None :
		setattr (_routine, _argspec.args[_enforcer_index], _enforcer)
	
	return (_tracer_index, _enforcer_index)
def _replace_te_members (_object, _parent_tracer, _parent_enforcer) :
	
	# ---- determining members
	_tracer_identifier = None
	_enforcer_identifier = None
	for _member_identifier, _member_value in inspect.getmembers (_object) :
		if _member_value is tracer :
			if not inspect.ismodule (_object) or _member_identifier != '_tracer' :
				if _tracer_identifier is not None :
					raise Exception ('wtf! (duplicate `tracer` was found `%s` and `%s`)' % (_tracer_identifier, _member_identifier))
				_tracer_identifier = _member_identifier
		if _member_value is enforcer :
			if not inspect.ismodule (_object) or _member_identifier != '_enforcer' :
				if _enforcer_identifier is not None :
					raise Exception ('wtf! (duplicate `enforcer` was found `%s` and `%s`)' % (_enforcer_identifier, _member_identifier))
				_enforcer_identifier = _member_identifier
	
	# ---- deleting members
	if _tracer_identifier is not None :
		delattr (_object, _tracer_identifier)
	if _enforcer_identifier is not None :
		delattr (_object, _enforcer_identifier)
	
	# ---- creating objects
	if _tracer_identifier is not None :
		_tracer = transcripts.tracer_tf (_object, parent = _parent_tracer)
	if _enforcer_identifier is not None :
		_enforcer = enforcements.enforcer_ef (_object, parent = _parent_enforcer)
	
	# ---- re-creating members
	if _tracer_identifier is not None :
		setattr (_object, _tracer_identifier, _tracer)
	if _enforcer_identifier is not None :
		setattr (_object, _enforcer_identifier, _enforcer)
	
	return (_tracer_identifier, _enforcer_identifier)
	def test_with_old_te (self) :
		_t = transcripts.tracer_tf (self.test_with_old_te)
		_e = enforcements.enforcer_ef (self.test_with_old_te)
		return