def _create_action_manager_recurse(self, schema, additions, path=''):

        # Compute the new action path.
        if path:
            path = path + '/' + schema.id
        else:
            path = schema.id

        preprocessed_items = self._preprocess_schemas(schema, additions, path)

        # Create the actual children by calling factory items.
        children = []
        for item in preprocessed_items:
            if isinstance(item, Schema):
                item = self._create_action_manager_recurse(item,additions,path)
            else:
                item = self.prepare_item(item, path+'/'+item.id)

            if isinstance(item, ActionManager):
                # Give even non-root action managers a reference to the
                # controller so that custom Groups, MenuManagers, etc. can get
                # access to their Tasks.
                item.controller = self.controller

            children.append(item)

        # Finally, create the pyface.action instance for this schema.
        return self.prepare_item(schema.create(children), path)

    #### Trait initializers ###################################################
Recursively create a manager for the given schema and additions map.
dataset/ETHPy150Open enthought/pyface/pyface/tasks/action/task_action_manager_builder.py/TaskActionManagerBuilder._create_action_manager_recurse