code: int encode( byte[] dst, int dstIndex ) {
          int start = headerStart = dstIndex;
  
          dstIndex += writeHeaderWireFormat( dst, dstIndex );
          dstIndex += writeAndXWireFormat( dst, dstIndex );
          length = dstIndex - start;
  
          if( digest != null ) {
              digest.sign( dst, headerStart, length, this, response );
          }
  
          return length;
      }
docs: /*
  We overload this method from ServerMessageBlock because
  we want writeAndXWireFormat to write the parameterWords
  and bytes. This is so we can write batched smbs because
  all but the first smb of the chaain do not have a header
  and therefore we do not want to writeHeaderWireFormat. We
  just recursivly call writeAndXWireFormat.