Create a new setter for the attribute.

modelbuilder: It's used to link the new mwritepropdef and self visibility: Is the setter has the same visibilty of the mreadpropdef.

If `not is_same_visibility and mreadpropdef.mproperty.visibility > protected_visibility` the `mwritepropdef` visibility will be set to protected.

Property definitions

nitc :: modelize_property $ AAttrPropdef :: create_setter
	# Create a new setter for the attribute.
	#
	# `modelbuilder`: It's used to link the new `mwritepropdef` and `self`
	# `visibility`: Is the setter has the same visibilty of the `mreadpropdef`.
	#	If `not is_same_visibility and mreadpropdef.mproperty.visibility > protected_visibility` the `mwritepropdef` visibility will be set to protected.
	fun create_setter(modelbuilder: ModelBuilder, is_same_visibility: nullable Bool): AAttrPropdef
	is
		expect(mreadpropdef != null) # Use to define the visibility, the mclassdef and the doc of the `mwritepropdef`
	do
		if mwritepropdef != null then return self # Self already has a `mwritepropdef`
		var same_visibility = false
		if is_same_visibility != null then same_visibility = is_same_visibility

		self.build_write_property(modelbuilder, mreadpropdef.mclassdef, same_visibility)
		self.build_write_signature
		return self
	end
src/modelize/modelize_property.nit:1517,2--1533,4