Return a new tree with multiple values associated. The parameter
        values can either be a dictionary mapping indices to values, or a list
        of (index,value) tuples

def multi_assoc(self, values):
        '''Return a new tree with multiple values associated. The parameter
        values can either be a dictionary mapping indices to values, or a list
        of (index,value) tuples'''
        if isinstance(values, dict):
            nndict = dict([(i, LookupTreeNode(i, values[i])) for i in values])
        else:
            nndict = dict([(i, LookupTreeNode(i, val)) for (i,val) in values])
        newtree = LookupTree()
        newtree.root = _multi_assoc_down(self.root, nndict, 0)
        return newtree