import java.util.Map; import java.util.concurrent.ConcurrentMap; import java.util.function.Function; import java.util.function.Supplier; class AsyncContext { public static T computeOnEdt(Supplier supplier) { return null; } public static ConcurrentMap create(Function computeValue, Supplier> mapCreator) { return null; } private static final Provider provider = null; private final Map myProviders = create(key-> computeOnEdt(() -> { return dataKey -> { return computeOnEdt(() -> { return provider.getData(dataKey); }); }; }), AsyncContext::createConcurrentWeakKeySoftValueMap ); public static ConcurrentMap createConcurrentWeakKeySoftValueMap() { return null; } } abstract class Component {} interface Provider { Object getData(String key); }