def get_refinement_neighbors(leaf,extent=2):
    """
    Get the list of neighbors used for refinement.
    This combines the neighbor and upper_neighbor list into
    one final list of neighbors

    Parameters
    ----------
    leaf : NDTree.node
        The leaf node we are evaluating

    extent : int
        The extent of the stencil, -extent,...,0,...,extent

    Returns
    -------
    final_list : list
        The final list of neighbors

    """
    offsets, neighbor_indices,neighbors, upper_neighbors = leaf.find_neighbors(extent=extent)
    total_neighbors = len(neighbors)

    # Even if already tagged, still need to check new neighbors
    final_list = [None]*total_neighbors

    for i in range(total_neighbors):

        if upper_neighbors[i] is not None:
            node = upper_neighbors[i]
            if not node.leaf:
                node = neighbors[i]
            final_list[i] = node
    return final_list