AbstractProperty extends AbstractObservableValue<T> implements SettableValue<T> { @Override public final void set(@NotNull T value) { if (myConstraints != null) { for (Constraint<T> c : myConstraints) { value = c.constrain(value); } } if (!isValueEqual(value)) { setNotificationsEnabled(false); setDirectly(value); setNotificationsEnabled(true); notifyInvalidated(); } }  @NotNull static List<AbstractProperty<?>> getAll(Object object); final void addConstraint(@NotNull Constraint<T> constraint); @Override final void set(@NotNull T value); final void set(@NotNull ObservableValue<T> value); @Override String toString();  }
@Test public void testTransformMethod() { IntProperty source = new IntValueProperty(10); Expression<String> transformed = source.transform(Object::toString); assertThat(transformed.get()).isEqualTo("10"); source.set(20); assertThat(transformed.get()).isEqualTo("20"); }