def METHOD_NAME(self):
    """Generate navigation tree recursively by generating Navigation obejct for classes and functions in name space
    """
    if self.child_nodes:
        navigation = Navigation(self.namespace_id, self.namespace_id)
        navigation.tags = NavigationTag(Kind.type_module)
        # Generate child navigation for each child nodes
        for c in filter(filter_function, self.child_nodes):
            child_nav = Navigation(c.name, c.namespace_id)
            child_nav.tags = NavigationTag(Kind.type_method)
            navigation.add_child(child_nav)
        for c in filter(filter_class, self.child_nodes):
            child_nav = Navigation(c.name, c.namespace_id)
            child_nav.tags = NavigationTag(Kind.type_enum if c.is_enum else Kind.type_class)
            navigation.add_child(child_nav)
        return navigation