/* 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
{
interface Func<A> {
double apply(Optional<A> a);
}
public static double compute(Func<? super Double> f) {
// Sometimes amend the function to do something slightly different
Func<? super Double> g = f;
if (System.
currentTimeMillis() > 0) g
= oa
-> Math.
max(0, f.
apply(oa.
map(a
-> a
)));
return g.apply(Optional.of(3.14)) + g.apply(Optional.empty());
}
{
Func<Double> f = oa -> 0;
compute(f);
Func<Object> g = oa -> 0;
compute(g);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICAgIGludGVyZmFjZSBGdW5jPEE+IHsKICAgICAgZG91YmxlIGFwcGx5KE9wdGlvbmFsPEE+IGEpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZG91YmxlIGNvbXB1dGUoRnVuYzw/IHN1cGVyIERvdWJsZT4gZikgewogICAgICAgIC8vIFNvbWV0aW1lcyBhbWVuZCB0aGUgZnVuY3Rpb24gdG8gZG8gc29tZXRoaW5nIHNsaWdodGx5IGRpZmZlcmVudAogICAgICAgIEZ1bmM8PyBzdXBlciBEb3VibGU+IGcgPSBmOwogICAgICAgIGlmIChTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSA+IDApCiAgICAgICAgICAgIGcgPSBvYSAtPiBNYXRoLm1heCgwLCBmLmFwcGx5KG9hLm1hcChhIC0+IGEpKSk7CgogICAgICAgIHJldHVybiBnLmFwcGx5KE9wdGlvbmFsLm9mKDMuMTQpKSArIGcuYXBwbHkoT3B0aW9uYWwuZW1wdHkoKSk7CiAgICB9CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJRnVuYzxEb3VibGU+IGYgPSBvYSAtPiAwOwoJCWNvbXB1dGUoZik7CgkJCQkKCQlGdW5jPE9iamVjdD4gZyA9IG9hIC0+IDA7CgkJY29tcHV0ZShnKTsKCX0KfQ==