Instead of HttpRequest having void setBody(Iterable<ByteBuffer> buffers, boolean isRestartable)
what about having two methods: void setBody(Iterable<ByteBuffer> buffers) // presumed restartable void setBody(Iterator<ByteBuffer> buffers) // clearly not restartable Not only does this avoid a potentially confusing boolean parameter, but it also avoids forcing people to create "dishonest" Iterables, where they know the iterator() method cannot be called more than once. - Ian