def METHOD_NAME(self):
	ext = '.swigwrap_%d.c' % self.generator.idx
	flags = self.env['SWIGFLAGS']
	if '-c++' in flags:
		ext += 'xx'
	out_node = self.inputs[0].parent.find_or_declare(self.module + ext)
	if '-c++' in flags:
		c_tsk = self.generator.cxx_hook(out_node)
	else:
		c_tsk = self.generator.c_hook(out_node)
	c_tsk.set_run_after(self)
	# transfer weights from swig task to c task
	if getattr(self, 'weight', None):
		c_tsk.weight = self.weight
	if getattr(self, 'tree_weight', None):
		c_tsk.tree_weight = self.tree_weight
	try:
		self.more_tasks.append(c_tsk)
	except AttributeError:
		self.more_tasks = [c_tsk]
	try:
		ltask = self.generator.link_task
	except AttributeError:
		pass
	else:
		ltask.set_run_after(c_tsk)
		# setting input nodes does not declare the build order
		# because the build already started, but it sets
		# the dependency to enable rebuilds
		ltask.inputs.append(c_tsk.outputs[0])
	self.outputs.append(out_node)
	if not '-o' in self.env['SWIGFLAGS']:
		self.env.append_value('SWIGFLAGS', ['-o', self.outputs[0].abspath()])