### Question:
PropertyConfiguration { public Optional<String> getPropertyOrigin(@NotNull final Property property) { assertPropertyNotNull(property); return resolveFromCache(property.getKey()).getResolutionInfo().map(PropertyResolutionInfo::getOrigin); } PropertyConfiguration(@NotNull final List<PropertySource> orderedPropertySources); @NotNull Optional<T> getValueOrEmpty(@NotNull final NullableProperty<T> property); @NotNull T getValueOrDefault(@NotNull final ValuedProperty<T> property); @NotNull Optional<T> getValue(@NotNull final NullableProperty<T> property); @NotNull T getValue(@NotNull final ValuedProperty<T> property); boolean wasKeyProvided(@NotNull final String key); boolean wasPropertyProvided(@NotNull final TypedProperty<T> property); Optional<String> getPropertySource(@NotNull final Property property); Optional<String> getPropertyOrigin(@NotNull final Property property); @NotNull Set<String> getKeys(); Optional<ValueParseException> getPropertyException(@NotNull final TypedProperty<T> property); Optional<String> getRaw(@NotNull final Property property); @NotNull Map<String, String> getRaw(); @NotNull Map<String, String> getRaw(@NotNull final Set<String> keys); @NotNull Map<String, String> getRaw(@NotNull final Predicate<String> predicate); @NotNull Map<String, String> getRaw(@NotNull final PassthroughProperty property);  }### Answer:
@Test public void getPropertyOrigin() { final NullableProperty<String> nullableProperty = new NullableTestProperty("example.key"); Assertions.assertEquals(Optional.of("map"), configOf(Pair.of(nullableProperty.getKey(), UNKNOWN_VALUE)).getPropertyOrigin(nullableProperty), "The property was provided and should have an origin."); Assertions.assertEquals(Optional.empty(), emptyConfig().getPropertyOrigin(nullableProperty), "The property was not provided and should not have an origin."); }