Check dependency of task for irresolvable conflicts (like task to task mutual dependency)

		:param task_cls: task to check
		:param skip_unresolved: flag controls this method behaviour for tasks that could not be found. \
		When False, method will raise an exception if task tag was set in dependency and the related task \
		wasn't found in registry. When True that unresolvable task will be omitted

		:return: None

def dependency_check(self, task_cls, skip_unresolved=False):
		""" Check dependency of task for irresolvable conflicts (like task to task mutual dependency)

		:param task_cls: task to check
		:param skip_unresolved: flag controls this method behaviour for tasks that could not be found. \
		When False, method will raise an exception if task tag was set in dependency and the related task \
		wasn't found in registry. When True that unresolvable task will be omitted

		:return: None
		"""

		def check(check_task_cls, global_dependencies):
			if check_task_cls.__registry_tag__ in global_dependencies:
				raise RuntimeError('Recursion dependencies for %s' % task_cls.__registry_tag__)

			dependencies = global_dependencies.copy()
			dependencies.append(check_task_cls.__registry_tag__)

			for dependency in check_task_cls.__dependency__:
				dependent_task = self.tasks_by_tag(dependency)
				if dependent_task is None and skip_unresolved is False:
					raise RuntimeError(
						"Task '%s' dependency unresolved (%s)" %
						(task_cls.__registry_tag__, dependency)
					)

				if dependent_task is not None:
					check(dependent_task, dependencies)

		check(task_cls, [])