ArrayEvent.length doesn't record the length of the array (the array does that), but of the used portion of the array.  The more general form function would take (byte[] bytes, int length), though a helper could exist that does this:

public void updateFromBytesNoCopy(final byte[] bytes) {
  updateFromBytesNoCopy(bytes, bytes.length);
}