':return: The tree position of the lowest descendant of this
tree that dominates ``self.leaves()[start:end]``.
:raise ValueError: if ``end <= start``'

def treeposition_spanning_leaves(self, start, end):

    if (end <= start):
        raise ValueError(u'end    must    be    greater    than    start')
    start_treepos = self.leaf_treeposition(start)
    end_treepos = self.leaf_treeposition((end - 1))
    for i in range(len(start_treepos)):
        if ((i == len(end_treepos)) or (start_treepos[i] != end_treepos[i])):
            return start_treepos[:i]
    return start_treepos
