public static long copyLarge(Reader input, Writer output, final long inputOffset, final long length)
            throws IOException {
        return copyLarge(input, output, inputOffset, length, new char[DEFAULT_BUFFER_SIZE]);
    }
Copy some or all chars from a large (over 2GB) <code>InputStream</code> to an
<code>OutputStream</code>, optionally skipping input chars.
<p>
This method buffers the input internally, so there is no need to use a
<code>BufferedReader</code>.
<p>
The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.

@param input       the <code>Reader</code> to read from
@param output      the <code>Writer</code> to write to
@param inputOffset : number of chars to skip from input before copying
                   -ve values are ignored
@param length      : number of chars to copy. -ve means all
@return the number of chars copied
@throws NullPointerException if the input or output is null
@throws IOException          if an I/O error occurs
@since 2.2
pay-java-common/src/main/java/com/egzosn/pay/common/util/IOUtils.java