docs: @SuppressWarnings("checkstyle:magicnumber")
  	private void writeDescriptionHeader(int recordCount) throws IOException {
  		assert this.language != null;
  
  		// DBF Format id (0)
  		this.stream.writeByte(0x03);
  
  		// Date of last update (1-3)
  		final Calendar date = Calendar.getInstance();
  		this.stream.writeByte(date.get(Calendar.YEAR) - 1900);
  		this.stream.writeByte(date.get(Calendar.MONTH) + 1);
  		this.stream.writeByte(date.get(Calendar.DAY_OF_MONTH));
  
  		// Number of records in the table (4-7)
  		this.stream.writeLEInt(recordCount);
  
  		// Number of bytes in the header (8-9)
  		// Each field description is stored in 32bits (see writeColumnHeaders())
  		final int columnHeaderSize = this.columns.size() * 32;
  		final int headerSize =
  				// size of this header part
  				32
  				// size of the column headers
  				+ columnHeaderSize
  				// final character
  				+ 1;
  		this.stream.writeLEShort((short) headerSize);
  
  		// Number of bytes one record (10-11)
  		// deletion flag
  		int recordSize = 1;
  		for (final DBaseFileField field : this.columns) {
  			recordSize += field.getLength();
  		}
  		this.stream.writeLEShort((short) recordSize);
  
  		// Reserved (12-31)
  		//(0Ch) : Reserved
  		this.stream.writeByte(0x00);
  		//(0Dh) : Reserved
  		this.stream.writeByte(0x00);
  		//(0Eh) : Incomplete transaction
  		this.stream.writeByte(0x00);
  		//(0Fh) : Encryption flag
  		this.stream.writeByte(0x00);
  		//(10h - 13h) : Free record thread (reserved for LAN only)
  		this.stream.writeLEInt(0);
  		//(14h - 17h) : Reserved for multi-user dBASE (dBASE III+ -)
  		this.stream.writeLEInt(0);
  		//(18h - 1Bh) : Reserved for multi-user dBASE (dBASE III+ -)
  		this.stream.writeLEInt(0);
  		//(1Ch) : MDX flag (dBASE IV)
  		this.stream.writeByte(0x00);
  		//(1Dh) : Language driver
  		this.stream.writeByte(this.language.getLanguageCode());
  		//(1Eh) : Reserved
  		this.stream.writeByte(0x00);
  		//(1Fh) : Reserved
  		this.stream.writeByte(0x00);
  	}