public ObjRecord(RecordInputStream in) {byte[] subRecordData = in.readRemainder();if (LittleEndian.getUShort(subRecordData, 0) != CommonObjectDataSubRecord.sid) {_uninterpretedData = subRecordData;return;}LittleEndianByteArrayInputStream subRecStream = new LittleEndianByteArrayInputStream(subRecordData);CommonObjectDataSubRecord cmo = (CommonObjectDataSubRecord)SubRecord.createSubRecord(subRecStream, 0);subrecords.add(cmo);while (true) {SubRecord subRecord = SubRecord.createSubRecord(subRecStream, cmo.getObjectType());subrecords.add(subRecord);if (subRecord.isTerminating()) {break;}}final int nRemainingBytes = subRecordData.length-subRecStream.getReadIndex();if (nRemainingBytes > 0) {_isPaddedToQuadByteMultiple = subRecordData.length % MAX_PAD_ALIGNMENT == 0;if (nRemainingBytes >= (_isPaddedToQuadByteMultiple ? MAX_PAD_ALIGNMENT : NORMAL_PAD_ALIGNMENT)) {if (!canPaddingBeDiscarded(subRecordData, nRemainingBytes)) {String msg = "Leftover " + nRemainingBytes+ " bytes in subrecord data " + HexDump.toHex(subRecordData);throw new RecordFormatException(msg);}_isPaddedToQuadByteMultiple = false;}} else {_isPaddedToQuadByteMultiple = false;}_uninterpretedData = null;}

public ObjRecord(RecordInputStream in1){byte[] subRecordData = in1.ReadRemainder();if (LittleEndian.GetUShort(subRecordData, 0) != CommonObjectDataSubRecord.sid){_uninterpretedData = subRecordData;subrecords = null;return;}subrecords = new List<SubRecord>();using (MemoryStream bais = new MemoryStream(subRecordData)){LittleEndianInputStream subRecStream = new LittleEndianInputStream(bais);CommonObjectDataSubRecord cmo = (CommonObjectDataSubRecord)SubRecord.CreateSubRecord(subRecStream, 0);subrecords.Add(cmo);while (true){SubRecord subRecord = SubRecord.CreateSubRecord(subRecStream, cmo.ObjectType);subrecords.Add(subRecord);if (subRecord.IsTerminating){break;}}int nRemainingBytes = subRecStream.Available();if (nRemainingBytes > 0){_isPaddedToQuadByteMultiple = subRecordData.Length % MAX_PAD_ALIGNMENT == 0;if (nRemainingBytes >= (_isPaddedToQuadByteMultiple ? MAX_PAD_ALIGNMENT : NORMAL_PAD_ALIGNMENT)){if (!CanPaddingBeDiscarded(subRecordData, nRemainingBytes)){String msg = "Leftover " + nRemainingBytes+ " bytes in subrecord data " + HexDump.ToHex(subRecordData);throw new RecordFormatException(msg);}_isPaddedToQuadByteMultiple = false;}}else{_isPaddedToQuadByteMultiple = false;}_uninterpretedData = null;}}
