def METHOD_NAME(self):
	"""
	Create :py:class:`rst` or other rst-related task objects
	"""
	if self.target:
		if isinstance(self.target, Node.Node):
			tgt = self.target
		elif isinstance(self.target, str):
			tgt = self.path.get_bld().make_node(self.target)
		else:
			self.bld.fatal("rst: Don't know how to build target name %s which is not a string or Node for %s" % (self.target, self))
	else:
		tgt = None
	tsk_type = getattr(self, 'type', None)
	src = self.to_nodes(self.source)
	assert len(src) == 1
	src = src[0]
	if tsk_type is not None and tgt is None:
		if tsk_type.startswith('rst2'):
			ext = tsk_type[4:]
		else:
			self.bld.fatal("rst: Could not detect the output file extension for %s" % self)
		tgt = src.change_ext('.%s' % ext)
	elif tsk_type is None and tgt is not None:
		out = tgt.name
		ext = out[out.rfind('.')+1:]
		self.type = 'rst2' + ext
	elif tsk_type is not None and tgt is not None:
		# the user knows what he wants
		pass
	else:
		self.bld.fatal("rst: Need to indicate task type or target name for %s" % self)
	deps_lst = []
	if getattr(self, 'deps', None):
		deps = self.to_list(self.deps)
		for filename in deps:
			n = self.path.find_resource(filename)
			if not n:
				self.bld.fatal('Could not find %r for %r' % (filename, self))
			if not n in deps_lst:
				deps_lst.append(n)
	try:
		task = self.create_task(self.type, src, tgt)
	except KeyError:
		self.bld.fatal("rst: Task of type %s not implemented (created by %s)" % (self.type, self))
	task.env = self.env
	# add the manual dependencies
	if deps_lst:
		try:
			lst = self.bld.node_deps[task.uid()]
			for n in deps_lst:
				if not n in lst:
					lst.append(n)
		except KeyError:
			self.bld.node_deps[task.uid()] = deps_lst
	inst_to = getattr(self, 'install_path', None)
	if inst_to:
		self.install_task = self.add_install_files(install_to=inst_to, install_from=task.outputs[:])
	self.source = []