# File lib/dm-core/associations/many_to_one.rb, line 48
        def child_key
          return @child_key if defined?(@child_key)

          model           = source_model
          repository_name = source_repository_name || target_repository_name
          properties      = model.properties(repository_name)

          source_key = target_key.zip(@child_properties || []).map do |target_property, property_name|
            property_name ||= "#{name}_#{target_property.name}".to_sym

            properties[property_name] || begin
              # create the property within the correct repository
              DataMapper.repository(repository_name) do
                model.property(property_name, target_property.to_child_key, source_key_options(target_property))
              end
            end
          end

          @child_key = properties.class.new(source_key).freeze
        end