def METHOD_NAME(depth, child_per_parent=2, starting_objective=1):
    """Build a full tree
    Parameters
    ----------
    depth: int
        Depth of the tree
    child_per_parent: int, optional
        Number of child per node. Default: 2
    """
    def create_node_item(node_index):
        return TrialStub(id=f"id-{node_index}", objective=node_index)
    node_index = starting_objective
    root = LineageNode(create_node_item(node_index))
    node_index += 1
    node_buffer = [root]
    next_nodes = []
    for i in range(depth - 1):
        for node in node_buffer:
            for k in range(child_per_parent):
                next_nodes.append(
                    LineageNode(create_node_item(node_index), parent=node)
                )
                node_index += 1
        node_buffer = next_nodes
        next_nodes = []
    print_tree(root, nameattr="tree_name")
    return root