docs: @Override
      public int decode ( byte[] buffer, int bufferIndex, int len ) throws SMBProtocolDecodingException {
          int start = bufferIndex;
          this.nextEntryOffset = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
          this.fileIndex = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
          this.creationTime = SMBUtil.readTime(buffer, bufferIndex);
          bufferIndex += 8;
          this.lastAccessTime = SMBUtil.readTime(buffer, bufferIndex);
          bufferIndex += 8;
          this.lastWriteTime = SMBUtil.readTime(buffer, bufferIndex);
          bufferIndex += 8;
          this.changeTime = SMBUtil.readTime(buffer, bufferIndex);
          bufferIndex += 8;
          this.endOfFile = SMBUtil.readInt8(buffer, bufferIndex);
          bufferIndex += 8;
          this.allocationSize = SMBUtil.readInt8(buffer, bufferIndex);
          bufferIndex += 8;
          this.extFileAttributes = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
          int fileNameLength = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
          this.eaSize = SMBUtil.readInt4(buffer, bufferIndex);
          bufferIndex += 4;
  
          int shortNameLength = buffer[ bufferIndex ] & 0xFF;
          bufferIndex += 2;
  
          this.shortName = Strings.fromUNIBytes(buffer, bufferIndex, shortNameLength);
          bufferIndex += 24;
  
          String str;
          if ( this.unicode ) {
              if ( fileNameLength > 0 && buffer[ bufferIndex + fileNameLength - 1 ] == '\0' && buffer[ bufferIndex + fileNameLength - 2 ] == '\0' ) {
                  fileNameLength -= 2;
              }
              str = Strings.fromUNIBytes(buffer, bufferIndex, fileNameLength);
          }
          else {
              if ( fileNameLength > 0 && buffer[ bufferIndex + fileNameLength - 1 ] == '\0' ) {
                  fileNameLength -= 1;
              }
              str = Strings.fromOEMBytes(buffer, bufferIndex, fileNameLength, this.config);
          }
          this.filename = str;
          bufferIndex += fileNameLength;
  
          return start - bufferIndex;
      }