import java.util.function.Supplier;
class Main {
public static void main
(String[] args
) { doSomething(Dog::new);
Main.<Runnable>doSomething(Dog::new); // Using type witness
}
System.
out.
println("doSomething(Runnable) called"); }
static <T> void doSomething(Supplier<T> s) {
System.
out.
println("doSomething(Supplier) called"); }
}
class Dog { }
aW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5TdXBwbGllcjsKCmNsYXNzIE1haW4gewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCWRvU29tZXRoaW5nKERvZzo6bmV3KTsKCQlkb1NvbWV0aGluZygoUnVubmFibGUpIERvZzo6bmV3KTsKCQlNYWluLjxSdW5uYWJsZT5kb1NvbWV0aGluZyhEb2c6Om5ldyk7IC8vIFVzaW5nIHR5cGUgd2l0bmVzcwoJfQoJCglzdGF0aWMgdm9pZCBkb1NvbWV0aGluZyhSdW5uYWJsZSByKSB7CgkJU3lzdGVtLm91dC5wcmludGxuKCJkb1NvbWV0aGluZyhSdW5uYWJsZSkgY2FsbGVkIik7Cgl9CgkKCXN0YXRpYyA8VD4gdm9pZCBkb1NvbWV0aGluZyhTdXBwbGllcjxUPiBzKSB7CgkJU3lzdGVtLm91dC5wcmludGxuKCJkb1NvbWV0aGluZyhTdXBwbGllcikgY2FsbGVkIik7Cgl9Cn0KCmNsYXNzIERvZyB7IH0K