docs: public void addRecord(Object[] values) {
  		if (this.closed) {
  			throw new IllegalStateException("You can add records a closed DBFWriter");
  		}
  		if (this.header.fieldArray == null) {
  			throw new DBFException("Fields should be set before adding records");
  		}
  
  		if (values == null) {
  			throw new DBFException("Null cannot be added as row");
  		}
  
  		if (values.length != this.header.fieldArray.length) {
  			throw new DBFException("Invalid record. Invalid number of fields in row");
  		}
  
  		for (int i = 0; i < this.header.fieldArray.length; i++) {
  			Object value = values[i];
  			if (value == null) {
  				continue;
  			}
  
  			switch (this.header.fieldArray[i].getType()) {
  
  			case CHARACTER:
  				if (!(value instanceof String)) {
  					throw new DBFException("Invalid value for field " + i + ":" + value);
  				}
  				break;
  
  			case LOGICAL:
  				if (!(value instanceof Boolean)) {
  					throw new DBFException("Invalid value for field " + i + ":" + value);
  				}
  				break;
  
  			case DATE:
  				if (!(value instanceof Date)) {
  					throw new DBFException("Invalid value for field " + i + ":" + value);
  				}
  				break;
  			case NUMERIC:
  			case FLOATING_POINT:
  				if (!(value instanceof Number)) {
  					throw new DBFException("Invalid value for field " + i + ":" + value);
  				}
  				break;
  			default:
  				throw new DBFException("Unsupported writting of field type " + i + " "
  						+ this.header.fieldArray[i].getType());
  			}
  
  		}
  
  		if (this.raf == null) {
  			this.v_records.add(values);
  		} else {
  			try {
  				writeRecord(this.raf, values);
  				this.recordCount++;
  			} catch (IOException e) {
  				throw new DBFException("Error occured while writing record. " + e.getMessage(), e);
  			}
  		}
  	}