code: final int serialize (final ByteBuffer dst, final int offset) throws InternetSCSIException {
  
          // has the destination array enough space to store this basic header
          // segment
          dst.position(offset);
          if (dst.remaining() < BHS_FIXED_SIZE) { throw new IllegalArgumentException("Destination array is too small."); }
  
          int line = 0;
          if (immediateFlag) {
              line |= IMMEDIATE_FLAG_MASK;
          }
  
          line |= operationCode.value() << Constants.THREE_BYTES_SHIFT;
  
          if (finalFlag) {
              line |= FINAL_FLAG_MASK;
          }
          dst.putInt(line);
  
          dst.putInt(dataSegmentLength | (totalAHSLength << Constants.THREE_BYTES_SHIFT));
          dst.putInt(BYTES_16_19, initiatorTaskTag);
  
          parser.serializeBasicHeaderSegment(dst, offset);
  
          return BHS_FIXED_SIZE;
      }
docs: This method serializes the informations of this BHS object to the byte representation defined by the iSCSI
  Standard.
  
  @param dst The destination array to write in.
  @param offset The start offset in <code>dst</code>.
  @return The length (in bytes) of the serialized form of this BHS object.
  @throws InternetSCSIException If any violation of the iSCSI-Standard emerge.