public void writeAttribute(int tag, VR vr, Value val) throws IOException { if (val instanceof BulkData && super.out instanceof ObjectOutputStream) { writeHeader(tag, vr, BulkData.MAGIC_LEN); ((BulkData) val).serializeTo((ObjectOutputStream) super.out); } else { int length = val.getEncodedLength(encOpts, explicitVR, vr); writeHeader(tag, vr, length); val.writeTo(this, vr); if (length == -1) writeHeader(Tag.SequenceDelimitationItem, null, 0); } }