code: public function entityGenerator(
  		Table $Table,
  		array $records,
  		array $defaults = [],
  		array $options = []
  	) {
  		$defaultOptions = [
  			'validate' => true,
  			'accessibleFields' => ['*' => true],
  		];
  		$options = $options + $defaultOptions;
  
  		$keyField = $Table->primaryKey();
  
  		foreach ($records as $r) {
  			$r = Hash::merge($defaults, $r);
  
  			$id = (!empty($r[$keyField]) ? $r[$keyField] : false);
  			if ($id) {
  				$entity = $Table->find()->where([$keyField => $id])->first();
  				if ($entity) {
  					$entity = $Table->patchEntity($entity, $r, $options);
  					if (!$entity->dirty()) {
  						$this->verbose("<success>{$Table->alias()} ({$id}): No changes.</success>");
  						continue;
  					}
  
  				} else {
  					$entity = $Table->newEntity($r, $options);
  					$entity->isNew(true);
  				}
  
  			} else {
  				$entity = $Table->newEntity($r, $options);
  			}
  
  			$errors = $entity->errors();
  			if ($errors) {
  				$this->printValidationErrors(
  					$Table->alias(),
  					$id,
  					$errors
  				);
  
  				continue;
  			}
  
  			yield $entity;
  		}
  	}
docs: Helper generator for use with importTable().
  
  Yields a single new Entity instance approciate for $Table for each
  of $records where the values are merged with $defaults.
  
  Will skip any records that fail to validate, dumping validation
  errors to the console in the process.
  
  Used by imporTables().
  
  @param Cake\ORM\Table $Table A Table instance to save records into.
  @param array $records An array of Entity records to save into the Table.
  @param array $defaults Optional array of default field values to merge into each record.
  @param array $options Optional array of newEntity() options to use.
  @return void