docs: @Override
      public int decode ( byte[] buffer, int bufferIndex ) throws SMBProtocolDecodingException {
          int start = this.headerStart = bufferIndex;
  
          bufferIndex += readHeaderWireFormat(buffer, bufferIndex);
          bufferIndex += readAndXWireFormat(buffer, bufferIndex);
  
          int len = bufferIndex - start;
          this.length = len;
  
          if ( isRetainPayload() ) {
              byte[] payload = new byte[len];
              System.arraycopy(buffer, 4, payload, 0, len);
              setRawPayload(payload);
          }
  
          if ( !verifySignature(buffer, 4, len) ) {
              throw new SMBProtocolDecodingException("Signature verification failed for " + this.getClass().getName());
          }
          return len;
      }