def migrate_row(row)
      # create an instance for each creatable class
      created = Set.new
      # the migrated objects
      migrated = @creatable_classes.map { |klass| create_instance(klass, row, created) }
      # migrate each object from the input row
      migrated.each do |obj|
        # First uniquify the object if necessary.
        if @unique and Unique === obj then
          logger.debug { "The migrator is making #{obj} unique..." }
          obj.uniquify
        end
        obj.migrate(row, migrated)
      end
      # the valid migrated objects
      @migrated = migrate_valid_references(row, migrated)
      # the candidate target objects
      tgts = @migrated.select { |obj| @target_class === obj }
      if tgts.size > 1 then
        raise MigrationError.new("Ambiguous #{@target_class} targets #{tgts.to_series}")
      end
      target = tgts.first || return
      
      logger.debug { "Migrated target #{target}." }
      target
    end
def migrate_row(row)
      # create an instance for each creatable class
      created = Set.new
      # the migrated objects
      migrated = @creatable_classes.map { |klass| create_instance(klass, row, created) }
      # migrate each object from the input row
      migrated.each do |obj|
        # First uniquify the object if necessary.
        if @unique and Unique === obj then
          logger.debug { "The migrator is making #{obj} unique..." }
          obj.uniquify
        end
        obj.migrate(row, migrated)
      end
      # the valid migrated objects
      @migrated = migrate_valid_references(row, migrated)
      # the candidate target objects
      tgts = @migrated.select { |obj| @target_class === obj }
      if tgts.size > 1 then
        raise MigrationError.new("Ambiguous #{@target_class} targets #{tgts.to_series}")
      end
      target = tgts.first || return
      
      logger.debug { "Migrated target #{target}." }
      target
    end
Imports the given CSV row into a target object.

 @param [{Symbol => Object}] row the input row field => value hash
 @return the migrated target object if the migration is valid, nil otherwise