code: private final int deserializeBasicHeaderSegment (final ByteBuffer bhs) throws InternetSCSIException , DigestException {
  
          int len = basicHeaderSegment.deserialize(this, bhs);
  
          // read header digest and validate
          if (basicHeaderSegment.getParser().canHaveDigests()) {
              len += deserializeDigest(bhs, bhs.position() - BasicHeaderSegment.BHS_FIXED_SIZE, BasicHeaderSegment.BHS_FIXED_SIZE, headerDigest);
          }
  
          if (LOGGER.isTraceEnabled()) {
              LOGGER.trace("Deserialized Basic Header Segment:\n" + toString());
          }
  
          return len;
      }
docs: Deserializes a given array starting from offset <code>0</code> and store the informations in the
  BasicHeaderSegment object..
  
  @param bhs The array to read from.
  @throws InternetSCSIException If any violation of the iSCSI-Standard emerge.
  @throws DigestException There is a mismatch of the digest.