cl_base* cl_base::get_object_by_name(string name){
	if(this->parent != nullptr){ 											// Указатель на родительский объект текущего объект не равен nullptr
		cl_base* parent_x = this->parent;									// Объявление указателя parent_x на объект класса cl_base и инициализация его значением указателя на родительский объект текущего объекта
		while(parent_x != nullptr ){    									// Указатель parent_x не равен nullptr
			parent_x = parent_x->parent;	 								// Присваивание указателю parent_x значение указателя на его родительский объект
		}
		return parent_x->get_object_by_name_on_branch(name); 				// Возврат результата вызова метода get_object_by_name_on_branch для указателя на объект parent_x передавая значение name
	}
	else{
		return this->get_object_by_name_on_branch(name); 					// Возврат результата вызова метода get_object_by_name_on_branch у текущего объекта передавая значение name		
	}
}can you optimise this code