import java.util.function.*;
class Ideone {
public static void main
(String[] args
) { ProcessorFactory<Processor<String>> pf = new ProcessorFactory(Processor<String>::new);
Processor<String> p = pf.build();
p.process("Ciao!");
}
}
class Processor<T> {
void process( T request ) {
}
}
class ProcessorFactory<T> {
private Supplier<T> supplier;
ProcessorFactory(Supplier<T> supplier) {
this.supplier = supplier;
}
T build() {
return supplier.get();
}
}
aW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi4qOwoKY2xhc3MgSWRlb25lIHsKCQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJUHJvY2Vzc29yRmFjdG9yeTxQcm9jZXNzb3I8U3RyaW5nPj4gcGYgPSBuZXcgUHJvY2Vzc29yRmFjdG9yeShQcm9jZXNzb3I8U3RyaW5nPjo6bmV3KTsKCVByb2Nlc3NvcjxTdHJpbmc+IHAgPSBwZi5idWlsZCgpOwoJcC5wcm9jZXNzKCJDaWFvISIpOwogICAgfQp9CgpjbGFzcyBQcm9jZXNzb3I8VD4gewogICAgdm9pZCBwcm9jZXNzKCBUIHJlcXVlc3QgKSB7CiAgICAJU3lzdGVtLm91dC5wcmludGxuKHJlcXVlc3QpOwogICAgfQp9CgpjbGFzcyBQcm9jZXNzb3JGYWN0b3J5PFQ+IHsKICAgIHByaXZhdGUgU3VwcGxpZXI8VD4gc3VwcGxpZXI7CgogICAgUHJvY2Vzc29yRmFjdG9yeShTdXBwbGllcjxUPiBzdXBwbGllcikgewogICAgICAgIHRoaXMuc3VwcGxpZXIgPSBzdXBwbGllcjsKICAgIH0KCiAgICBUIGJ1aWxkKCkgewogICAgICAgIHJldHVybiBzdXBwbGllci5nZXQoKTsKICAgIH0KfQ==