Archaius2Ext { public static Supplier<List<Duration>> asDurationList(Supplier<String> configSupplier) { Function<String, List<Duration>> memoizedFunction = Evaluators.memoizeLast(v -> StringExt.parseDurationMsList(v).orElse(Collections.emptyList())); return () -> memoizedFunction.apply(configSupplier.get()); }  static Supplier<List<Duration>> asDurationList(Supplier<String> configSupplier); static Flux<T> watch(Property<T> property); static Flux<T> watch(PropertyRepository propertyRepository, String key, Class<T> type); static C newConfiguration(Class<C> configType, String... keyValuePairs); static C newConfiguration(Class<C> configType, Map<String, String> properties); static C newConfiguration(Class<C> configType, Config config); static C newConfiguration(Class<C> configType, String prefix, Config config); static C newConfiguration(Class<C> configType, Environment environment); static C newConfiguration(Class<C> configType, String prefix, Environment environment); static ObjectConfigurationResolver<OBJECT, CONFIG> newObjectConfigurationResolver(
            Config configuration,
            Function<OBJECT, String> selectorFieldAccessor,
            Class<CONFIG> configType,
            CONFIG defaultConfig); static CloseableReference<ObjectConfigurationResolver<OBJECT, CONFIG>> newObjectConfigurationResolver(
            String prefix,
            Environment environment,
            Function<OBJECT, String> selectorFieldAccessor,
            Class<CONFIG> configType,
            CONFIG defaultConfig,
            Flux<Long> updateTrigger); static String toString(Config config);  }
@Test public void testAsDurationList() { assertThat(Archaius2Ext.asDurationList(() -> "1, 2, 3").get()).contains( Duration.ofMillis(1), Duration.ofMillis(2), Duration.ofMillis(3) ); }