docs: @Override
      protected int readBytesWireFormat ( byte[] buffer, int bufferIndex ) throws SMBProtocolDecodingException {
          int start = bufferIndex;
          int structureSize = SMBUtil.readInt2(buffer, bufferIndex);
          if ( structureSize == 9 ) {
              return super.readErrorResponse(buffer, bufferIndex);
          }
          else if ( structureSize != 49 ) {
              throw new SMBProtocolDecodingException("Expected structureSize = 49");
          }
          bufferIndex += 4;
          this.ctlCode = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
  
          this.fileId = new byte[16];
          System.arraycopy(buffer, bufferIndex, this.fileId, 0, 16);
          bufferIndex += 16;
  
          int inputOffset = SMBUtil.readInt4(buffer, bufferIndex) + getHeaderStart();
          bufferIndex += 4;
  
          int inputCount = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
  
          int outputOffset = SMBUtil.readInt4(buffer, bufferIndex) + getHeaderStart();
          bufferIndex += 4;
  
          int outputCount = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
  
          this.ioctlFlags = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
          bufferIndex += 4; // Reserved2
  
          this.inputData = createInputDecodable();
          this.outputData = this.outputBuffer == null ? createOutputDecodable() : null;
  
          if ( this.inputData != null ) {
              this.inputData.decode(buffer, inputOffset, inputCount);
          }
          bufferIndex = Math.max(inputOffset + inputCount, bufferIndex);
  
          if ( this.outputBuffer != null ) {
              if ( outputCount > this.outputBuffer.length ) {
                  throw new SMBProtocolDecodingException("Output length exceeds buffer size");
              }
              System.arraycopy(buffer, outputOffset, this.outputBuffer, 0, outputCount);
          }
          else if ( this.outputData != null ) {
              this.outputData.decode(buffer, outputOffset, outputCount);
          }
          this.outputLength = outputCount;
          bufferIndex = Math.max(outputOffset + outputCount, bufferIndex);
          return bufferIndex - start;
      }