--- old/src/java.base/share/classes/java/io/OutputStream.java 2017-11-20 16:48:05.000000000 -0800 +++ new/src/java.base/share/classes/java/io/OutputStream.java 2017-11-20 16:48:04.000000000 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2017, 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 @@ -25,6 +25,8 @@ package java.io; +import java.util.Objects; + /** * This abstract class is the superclass of all classes representing * an output stream of bytes. An output stream accepts output bytes @@ -104,10 +106,8 @@ * stream is closed. */ public void write(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (len < 0) || - ((off + len) > b.length) || ((off + len) < 0)) { + Objects.requireNonNull(b); + if (off < 0 || len < 0 || len > b.length - off) { throw new IndexOutOfBoundsException(); } else if (len == 0) { return;