@Test
public void create()
{

    final DummyTestTarget testTarget = new DummyTestTarget();
    final Property<String> bothSet = PropertyCreationHelper.create(Optional.of(o -> testTarget.getValueOne()), Optional.of((o, s) -> testTarget.setValueOne(s)), false);
    Assert.assertFalse(bothSet instanceof StaticValueProperty);
    Assert.assertEquals("One", bothSet.apply(new Object()).get());
    bothSet.accept(new Object(), "Set");
    Assert.assertEquals("Set", testTarget.getValueOne());
    final Property<String> getterNoneNull = PropertyCreationHelper.create(Optional.of(o -> testTarget.getValueOne()), Optional.empty(), false);
    Assert.assertEquals("Set", getterNoneNull.apply(new Object()).get());
    getterNoneNull.accept(new Object(), "NotSet");
    Assert.assertEquals("Set", testTarget.getValueOne());
    final Property<String> setterNoneNull = PropertyCreationHelper.create(Optional.empty(), Optional.of((c, o) -> testTarget.setValueOne(o)), false);
    Assert.assertFalse(setterNoneNull.apply(new Object()).isPresent());
    setterNoneNull.accept(new Object(), "NotSet");
    Assert.assertEquals("NotSet", testTarget.getValueOne());
}