I find Either[Either] a bit confusing here. Maybe you should create a class to represent the possible values:
```
sealed trait Values

case class IteratorValues(iterator: Iterator[Any]) extends Values
case class ArrayBufferValues(buffer: ArrayBuffer[Any]) extends Values
case class ByteBufferValues(buffer: ByteBuffer[Any]) extends Values
```

That will be a bigger code change but it will save us headaches later on.. dealing with `Left(Right(something))` is just weird.