PropertyCreationHelper { public static <T> Property<T> createFromStaticValue(@Nullable T value) { return new StaticValueProperty<>(value); } private  PropertyCreationHelper(); static Property<T> createFromStaticValue(@Nullable T value); static Property<T> createFromOptional(
      @Nullable final Function<Object, T> getter,
      @Nullable final BiConsumer<Object, T> setter,
      @NotNull final boolean requiresDataContext); static Property<T> create(
      @NotNull final Optional<Function<Object, T>> getter,
      @NotNull final Optional<BiConsumer<Object, T>> setter,
      @NotNull final boolean requiresDataContext); static Property<T> createFromNonOptional(
      @NotNull final Function<Object, T> getter,
      @NotNull final BiConsumer<Object, T> setter,
      @NotNull final boolean requiresDataContext); static Property<T> createFromName(@NotNull final Optional<String> getSetMethodName); @SuppressWarnings({"OptionalUsedAsFieldOrParameterType", "unchecked"}) static Property<T> createFromName(
      @NotNull final Optional<String> getMethodName,
      @NotNull final Optional<String> setMethodName);  }
@Test public void createFromStaticValue() { final Property<String> property = PropertyCreationHelper.createFromStaticValue("Static"); Assert.assertTrue(property instanceof StaticValueProperty); Assert.assertEquals("Static", property.apply(new Object()).get()); property.accept(new Object(), "Set"); Assert.assertEquals("Set", property.apply(new Object()).get()); }