public Buf getRange(Range range)
{
long size = getSize();
long s = range.start(size);
long e = range.end(size);
int n = (int)(e - s + 1);
if (n < 0) throw IndexErr.make(range).val;
byte[] slice = new byte[n];
getBytes(s, slice, 0, n);
Buf result = new MemBuf(slice, n);
result.charset(charset());
return result;
}