actually return absent() when there is no result
obey contract of equals(Object)