def METHOD_NAME(self):
	if not self.env.WITH_PCH:
		return
	if getattr(self.bld, 'pch_tasks', None) is None:
		self.bld.pch_tasks = {}
	if getattr(self, 'headers', None) is None:
		return
	self.headers = self.to_nodes(self.headers)
	if getattr(self, 'name', None):
		try:
			task = self.bld.pch_tasks["%s.%s" % (self.name, self.idx)]
			self.bld.fatal("Duplicated 'pch' task with name %r" % "%s.%s" % (self.name, self.idx))
		except KeyError:
			pass
	out = '%s.%d%s' % (self.target, self.idx, self.env['CXXPCH_EXT'])
	out = self.path.find_or_declare(out)
	task = self.create_task('gchx', self.headers, out)
	# target should be an absolute path of `out`, but without precompiled header extension
	task.target = out.abspath()[:-len(out.suffix())]
	self.pch_task = task
	if getattr(self, 'name', None):
		self.bld.pch_tasks["%s.%s" % (self.name, self.idx)] = task