--- old/src/java.base/share/classes/java/util/Optional.java 2016-10-07 10:10:52.000000000 -0700 +++ new/src/java.base/share/classes/java/util/Optional.java 2016-10-07 10:10:52.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -264,12 +264,14 @@ * @throws NullPointerException if the mapping function is {@code null} or * returns a {@code null} result */ - public Optional flatMap(Function> mapper) { + public Optional flatMap(Function> mapper) { Objects.requireNonNull(mapper); if (!isPresent()) { return empty(); } else { - return Objects.requireNonNull(mapper.apply(value)); + @SuppressWarnings("unchecked") + Optional r = (Optional) mapper.apply(value); + return Objects.requireNonNull(r); } } @@ -286,12 +288,14 @@ * produces a {@code null} result * @since 9 */ - public Optional or(Supplier> supplier) { + public Optional or(Supplier> supplier) { Objects.requireNonNull(supplier); if (isPresent()) { return this; } else { - return Objects.requireNonNull(supplier.get()); + @SuppressWarnings("unchecked") + Optional r = (Optional) supplier.get(); + return Objects.requireNonNull(r); } }