public static Payload FromArray(Rexpression[] objects) { if (objects == null || objects.Length == 0) { return new Payload(PayloadCode.Array, null); } // size of each rexpression is 1 byte for the type + data length int size = objects.Sum(rexpression => 1 + rexpression.DataSize); var bytes = new byte[size]; for (int i = 0, offset = 0; i < objects.Length; i++) { var rexpBytes = objects[i].ToEncodedBytes(); Array.Copy(rexpBytes, 0, bytes, offset, rexpBytes.Length); offset += rexpBytes.Length; } return new Payload(PayloadCode.Array, bytes); }