{% for type in types.implementing.AutoGenerateProperty %}
// sourcery:inline:{{type.name}}.AutoGenerateProperty

// Generated using Sourcery
// DO NOT EDIT
public struct Property {
    {% for variable in type.variables|instance where
    variable|annotated:"autoGenerateProperty"
    %}
    public let {{variable.name}}: {{variable.typeName}}
    {% endfor %}

	public init(
        {% for variable in type.variables|instance where
        variable|annotated:"autoGenerateProperty"
        %}
		{{variable.name}}: {{variable.typeName}}{% if not forloop.last %},{% endif %}
		{% endfor %}
	) {
        {% for variable in type.variables|instance where
        variable|annotated:"autoGenerateProperty"
        %}
		self.{{variable.name}} = {{variable.name}}
		{% endfor %}
	}
}

public func configure(property: Property) {
    {% for variable in type.variables|instance where
    variable|annotated:"autoGenerateProperty"
    %}
	self.{{variable.name}} = property.{{variable.name}}
	{% endfor %}
}

public func update(property: Property) {
    {% for variable in type.variables|instance where
    variable|annotated:"autoUpdatableObject" and
    variable|annotated:"autoGenerateProperty"
    %}
	update({{variable.name}}: property.{{variable.name}})
	{% endfor %}
}
// sourcery:end
{% endfor %}
