--- old/src/share/classes/java/util/stream/ReferencePipeline.java 2013-10-15 10:45:04.979604737 -0700 +++ new/src/share/classes/java/util/stream/ReferencePipeline.java 2013-10-15 10:45:04.807604729 -0700 @@ -394,32 +394,21 @@ return SortedOps.makeRef(this, comparator); } - private Stream slice(long skip, long limit) { - return SliceOps.makeRef(this, skip, limit); - } - @Override public final Stream limit(long maxSize) { if (maxSize < 0) throw new IllegalArgumentException(Long.toString(maxSize)); - return slice(0, maxSize); + return SliceOps.makeRef(this, 0, maxSize); } @Override - public final Stream substream(long startingOffset) { - if (startingOffset < 0) - throw new IllegalArgumentException(Long.toString(startingOffset)); - if (startingOffset == 0) + public final Stream skip(long n) { + if (n < 0) + throw new IllegalArgumentException(Long.toString(n)); + if (n == 0) return this; else - return slice(startingOffset, -1); - } - - @Override - public final Stream substream(long startingOffset, long endingOffset) { - if (startingOffset < 0 || endingOffset < startingOffset) - throw new IllegalArgumentException(String.format("substream(%d, %d)", startingOffset, endingOffset)); - return slice(startingOffset, endingOffset - startingOffset); + return SliceOps.makeRef(this, n, -1); } // Terminal operations from Stream