This seems like it may be too slow by default in SparseVector, maybe we want to override it there. (Actually even in DenseVector there's little point in allocating a new object). The question is whether this gets used a lot in inner loops, but it's the kind of method that might.