def _get_node(self, time_qualifier, timeperiod):
        """
        Method retrieves a tree node identified by time_qualifier and timeperiod
        In case intermittent or target nodes does not exist - method will request their creation
        :param time_qualifier: identifies the tree level
        :param timeperiod: identifies the target node timeperiod
        :return: requested node; type <AbstractNode>
        """
        hierarchy_entry = self.process_hierarchy.get_by_qualifier(time_qualifier)
        if hierarchy_entry.parent:
            parent_time_qualifier = hierarchy_entry.parent.process_entry.time_qualifier
            parent_timeperiod = hierarchy_entry.parent.cast_timeperiod(timeperiod)
            parent = self._get_node(parent_time_qualifier, parent_timeperiod)
        else:
            parent = self.root

        node = parent.children.get(timeperiod)
        if node is None:
            node = TreeNode(self, parent, hierarchy_entry.process_entry.process_name, timeperiod, None)
            parent.children[timeperiod] = node

        return node
Method retrieves a tree node identified by time_qualifier and timeperiod
        In case intermittent or target nodes does not exist - method will request their creation
        :param time_qualifier: identifies the tree level
        :param timeperiod: identifies the target node timeperiod
        :return: requested node; type <AbstractNode>