digraph CODEOBJECT_GENERATOR
{
// ??????????? ???????-????????????
	FUNC_1 [module=case_gen_funcs, entry_func=function_1]
	FUNC_2 [module=case_gen_funcs, entry_func=function_2]
	FUNC_3 [module=case_gen_funcs, entry_func=function_3]
	SAVE_TO_DB [module=case_gen_funcs, entry_func=save_to_db]
	SAVE_TO_FILE [module=case_gen_funcs, entry_func=save_to_file]
	REPEAT [module=case_gen_funcs, entry_func=repeat]
	EXIT [module=case_gen_funcs, entry_func=exit]
	CREATE_DUMP [module=case_gen_funcs, entry_func=create_dump]
// ??????????? ???????-??????????
	PREDICATE_X [module=predicate_funcs, entry_func=predicate_x]
	PREDICATE_Y [module=predicate_funcs, entry_func=predicate_y]
	SELECTOR [module=predicate_funcs, entry_func=selector]
// ??????????? ??????? ???????? (????????)
	EDGE_1 [predicate=PREDICATE_X, function=FUNC_1]
	EDGE_2 [predicate=PREDICATE_Y, function=FUNC_2]
	EDGE_3 [predicate=PREDICATE_X, function=FUNC_3]
	EDGE_4 [predicate=PREDICATE_Y, function=SAVE_TO_DB]
	EDGE_5 [predicate=PREDICATE_X, function=SAVE_TO_FILE]
	EDGE_6 [predicate=PREDICATE_Y, function=REPEAT]
	EDGE_7 [predicate=PREDICATE_X, function=EXIT]
	EDGE_8 [function=EXIT]
	EDGE_9 [predicate=CHECK_DUMP, function=EXIT]
	EDGE_10 [function=CREATE_DUMP]
// ? ???? ??????? ????????? ????????????????? 	
	CONTENT_SUBSTITUTED [parallelism=threading]
// ??????????? ???????? ??????
	__BEGIN__ -> INPUT_READY
	INPUT_READY -> TEPMLATE_COPIED [morphism=EDGE_1]
	TEPMLATE_COPIED -> NAMES_SUBSTITUTED [morphism=EDGE_2]
	NAMES_SUBSTITUTED -> CONTENT_SUBSTITUTED [morphism=EDGE_3]
	CONTENT_SUBSTITUTED => DUMP_CREATED [morphism=EDGE_10]
	CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_4]
	CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_5]
// ? ??????????? ?? ?????? ?????????? SELECTOR ?????????????? ??????? ?? ??????? ??? ??????? ?????
	RESULT_SAVED -> INPUT_READY, __END__ [selector=SELECTOR, morphism=(EDGE_6, EDGE_7)]
	RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9)]
}