code: private final int deserializeAdditionalHeaderSegments (final ByteBuffer pdu, final int offset) throws InternetSCSIException {
  
          // parsing Additional Header Segment
          int off = offset;
          int ahsLength = basicHeaderSegment.getTotalAHSLength();
          while (ahsLength != 0) {
              final AdditionalHeaderSegment tmpAHS = new AdditionalHeaderSegment();
              tmpAHS.deserialize(pdu, off);
  
              additionalHeaderSegments.add(tmpAHS);
              ahsLength -= tmpAHS.getLength();
  
              off += tmpAHS.getSpecificField().position();
          }
  
          return off - offset;
      }
docs: Deserializes a array (starting from the given offset) and store the informations to the
  <code>AdditionalHeaderSegment</code> object.
  
  @param pdu The <code>ByteBuffer</code> to read from.
  @param offset The offset to start from.
  @return The length of the written bytes.
  @throws InternetSCSIException If any violation of the iSCSI-Standard emerge.