mvvmfx/src/main/java/de/saxsys/mvvmfx/utils/mapping/ModelWrapper.java
public StringProperty immutableField(StringGetter<M> getter, StringImmutableSetter<M> immutableSetter){
		return addImmutable(new ImmutableBeanPropertyField<>(this::propertyWasChanged, getter, immutableSetter, SimpleStringProperty::new));
	}
public StringProperty immutableField(StringGetter<M> getter, StringImmutableSetter<M> immutableSetter){
		return addImmutable(new ImmutableBeanPropertyField<>(this::propertyWasChanged, getter, immutableSetter, SimpleStringProperty::new));
	}
Add a new immutable field of type String to this instance of the wrapper. This method is used for immutable
model elements that have getters to get values for it's fields but not setters.
Instead, immutables have methods that take a new value for a field and return a new cloned instance of the
model element with only this field updated to the new value. The old model instance isn't changed.

<p>

Example:
<p>

<pre>
ModelWrapper{@code<Person>} personWrapper = new ModelWrapper{@code<>}();

StringProperty wrappedNameProperty = personWrapper.field(person -> person.getName(), (person, value)
-> {
Person clone = person.withName(value);
return clone;
});

// or with a method reference
StringProperty wrappedNameProperty = personWrapper.field(Person::getName, Person::withName);

</pre>


@param getter
a function that returns the current value of the field for a given model element. Typically you will
use a method reference to the getter method of the model element.
@param immutableSetter
a function that returns a clone of this the given model element that has the given value set. Typically you will use a method
reference to the immutable setter method of the model element.

@return The wrapped property instance.