code: function additionalColumns(expectedHeader, actualHeader) {
  	let errorColumns = [];
  
  	for (let i = 0; i < actualHeader.length; i++) {
  		let found = false;
  		for (let j = 0; j < expectedHeader.length; j++) {
  			// does the column has alternative column names
  			if (Array.isArray(expectedHeader[j])) {
  				for (let k = 0; k < expectedHeader[j].length; k++) {
  					if (expectedHeader[j][k] === actualHeader[i]) {
  						found = true;
  						break;
  					}
  				}
  			} else {
  				if (expectedHeader[j] === actualHeader[i]) {
  					found = true;
  				}
  			}
  			if (found) {
  				break;
  			}
  		}
  
  		if (!found) {
  			errorColumns.push(actualHeader[i]);
  		}
  	}
  
  	if (errorColumns.length > 0) {
  		return errorColumns;
  	}
  }
docs: /*
  Compares an expected array against an actual array and checks that the actual array
  has no columns which are not in the expected array. The fields in the expected array
  could be also arrays.
  @param expectedHeader The expected array
  @param actualHeader The actual array
  @return An array with all the missing values.