@@ -0,0 +1,2596 @@
+package qub;%0A%0A/**%0A * A generic stream interface for writing objects.%0A * @param %3CT%3E The type of objects that are written to this stream.%0A */%0Apublic interface WriteStream%3CT%3E%0A%7B%0A    /**%0A     * Get the AsyncRunner that this stream's asynchronous tasks will be scheduled on.%0A     * @return The AsyncRunner that this stream's asynchronous tasks will be scheduled on.%0A     */%0A    AsyncRunner getAsyncRunner();%0A%0A    /**%0A     * Write the provided value to this stream.%0A     * @param value The value to write to this stream.%0A     * @return Whether or not the write operation was successful.%0A     */%0A    Result%3CBoolean%3E write(T value);%0A%0A    /**%0A     * Write the provided value to this stream.%0A     * @param value The value to write to this stream.%0A     * @return Whether or not the write operation was successful.%0A     */%0A    AsyncFunction%3CResult%3CBoolean%3E%3E writeAsync(T value);%0A%0A    /**%0A     * Write the provided values to this stream.%0A     * @param values The values to write to this stream.%0A     * @return The number of values that were written.%0A     */%0A    Result%3CInteger%3E write(T%5B%5D values);%0A%0A    /**%0A     * Write the provided values to this stream.%0A     * @param values The values to write to this stream.%0A     * @return The number of values that were written.%0A     */%0A    AsyncFunction%3CResult%3CInteger%3E%3E writeAsync(T%5B%5D values);%0A%0A    /**%0A     * Write the provided values to this stream.%0A     * @param values The values to write.%0A     * @param startIndex The start index in the values array to begin writing from.%0A     * @param length The number of values to write.%0A     * @return The number of values that were written.%0A     */%0A    Result%3CInteger%3E write(T%5B%5D values, int startIndex, int length);%0A%0A    /**%0A     * Write the provided values to this stream.%0A     * @param values The values to write.%0A     * @param startIndex The start index in the values array to begin writing from.%0A     * @param length The number of values to write.%0A     * @return The number of values that were written.%0A     */%0A    AsyncFunction%3CResult%3CInteger%3E%3E writeAsync(T%5B%5D values, int startIndex, int length);%0A%0A    /**%0A     * Write all of the values from the provided readStream.%0A     * @param readStream The read stream to read values from.%0A     * @return The number of values that were written.%0A     */%0A    Result%3CInteger%3E writeAll(ReadStream%3CT%3E readStream);%0A%0A    /**%0A     * Write all of the values from the provided readStream.%0A     * @param readStream The read stream to read values from.%0A     * @return The number of values that were written.%0A     */%0A    AsyncFunction%3CResult%3CInteger%3E%3E writeAllAsync(ReadStream%3CT%3E readStream);%0A%7D%0A

Add generic WriteStream interface