mvvmfx/src/main/java/de/saxsys/mvvmfx/utils/mapping/ModelWrapper.java
public StringProperty immutableField(String identifier, StringGetter<M> getter, StringImmutableSetter<M> immutableSetter){
		return addIdentifiedImmutable(identifier, new ImmutableBeanPropertyField<>(this::propertyWasChanged, getter, immutableSetter, () -> new SimpleStringProperty(null, identifier)));
	}
public StringProperty immutableField(String identifier, StringGetter<M> getter, StringImmutableSetter<M> immutableSetter){
		return addIdentifiedImmutable(identifier, new ImmutableBeanPropertyField<>(this::propertyWasChanged, getter, immutableSetter, () -> new SimpleStringProperty(null, identifier)));
	}
Add a new immutable field of type String to this instance of the wrapper. See {@link #immutableField(StringGetter, StringImmutableSetter}).
This method additionally takes a string identifier as first parameter.
<p/>
This identifier is used to return the same property instance even when the method is invoked multiple times.

@param identifier
an identifier for the field.
@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.