/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static <T, X> Optional<T> cast(Optional<X> orgOptional, Class<T> clazz) {
return orgOptional //
.filter(clazz::isInstance) // check instance
.map(clazz::cast); // cast
}
public static <T, X> Optional<T> cast2(Optional<X> orgOptional, Class<? extends T> clazz) {
return orgOptional //
.filter(clazz::isInstance) // check instance
.map(clazz::cast); // cast
}
{
Ideone instance = new Ideone();
Optional<? extends Ideone> opt = cast(Optional.empty(), instance.getClass());
Optional<Ideone> opt2 = cast2(Optional.empty(), instance.getClass());
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKcHVibGljIHN0YXRpYyA8VCwgWD4gT3B0aW9uYWw8VD4gY2FzdChPcHRpb25hbDxYPiBvcmdPcHRpb25hbCwgQ2xhc3M8VD4gY2xhenopIHsKICAgIHJldHVybiBvcmdPcHRpb25hbCAvLwogICAgICAgIC5maWx0ZXIoY2xheno6OmlzSW5zdGFuY2UpIC8vIGNoZWNrIGluc3RhbmNlCiAgICAgICAgLm1hcChjbGF6ejo6Y2FzdCk7IC8vIGNhc3QKfQoKcHVibGljIHN0YXRpYyA8VCwgWD4gT3B0aW9uYWw8VD4gY2FzdDIoT3B0aW9uYWw8WD4gb3JnT3B0aW9uYWwsIENsYXNzPD8gZXh0ZW5kcyBUPiBjbGF6eikgewogICAgcmV0dXJuIG9yZ09wdGlvbmFsIC8vCiAgICAgICAgLmZpbHRlcihjbGF6ejo6aXNJbnN0YW5jZSkgLy8gY2hlY2sgaW5zdGFuY2UKICAgICAgICAubWFwKGNsYXp6OjpjYXN0KTsgLy8gY2FzdAp9CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJSWRlb25lIGluc3RhbmNlID0gbmV3IElkZW9uZSgpOwoJCU9wdGlvbmFsPD8gZXh0ZW5kcyBJZGVvbmU+IG9wdCA9IGNhc3QoT3B0aW9uYWwuZW1wdHkoKSwgaW5zdGFuY2UuZ2V0Q2xhc3MoKSk7CgkJT3B0aW9uYWw8SWRlb25lPiBvcHQyID0gY2FzdDIoT3B0aW9uYWwuZW1wdHkoKSwgaW5zdGFuY2UuZ2V0Q2xhc3MoKSk7Cgl9Cn0=