@Override public boolean equals(final Object obj) { if (obj instanceof Nothing) { return false; } else if (obj instanceof None) { return false; } if (obj instanceof Present) return Objects.equals(lazy.get(), ((Present) obj).orElse(null)); else if (obj instanceof Lazy) { return Objects.equals(orElse(null), ((Maybe) obj).orElse(null)); } return false; }
@Override public boolean equals(final Object obj) { if (obj instanceof Nothing) { return !isPresent(); } else if (obj instanceof None) { return !isPresent(); }else if (obj instanceof Present && isPresent()) return Objects.equals(orElse(null), ((Present) obj).orElse(null)); else if (obj instanceof Lazy) { if (isPresent()) return Objects.equals(orElse(null), ((Maybe) obj).orElse(null)); else { return !((Lazy) obj).isPresent(); } } return false; }
@Override public boolean equals(final Object obj) { if (obj instanceof Nothing) { return false; } else if (obj instanceof None) { return false; } if (obj instanceof Present) return Objects.equals(lazy.get(), ((Present) obj).orElse(null)); else if (obj instanceof Lazy) { return Objects.equals(orElse(null), ((Maybe) obj).orElse(null)); } return false; }
@Override public boolean equals(final Object obj) { if (obj instanceof Nothing) { return !isPresent(); } else if (obj instanceof None) { return !isPresent(); }else if (obj instanceof Present && isPresent()) return Objects.equals(orElse(null), ((Present) obj).orElse(null)); else if (obj instanceof Lazy) { if (isPresent()) return Objects.equals(orElse(null), ((Maybe) obj).orElse(null)); else { return !((Lazy) obj).isPresent(); } } return false; }