Consider named factory methods to make it completely obvious which constructors copy and which ones don't. As-is there's some calling code that is non-obvious.

For example, I could see myself "simplifying" `new ByteSequence(bytes, 0, bytes.length)` into `new ByteSequence(bytes)` and breaking its behavior.

This would be more obvious:

```
  ByteSequence wrap = ByteSequence.of(array);
  ByteSequence copy = ByteSequence.copyOf(array);
```