public static void readFully(Reader input, char[] buffer, int offset, int length) throws IOException {
        int actual = read(input, buffer, offset, length);
        if (actual != length) {
            throw new EOFException("Length to read: " + length + " actual: " + actual);
        }
    }
Read the requested number of characters or fail if there are not enough left.
<p>
This allows for the possibility that {@link Reader#read(char[], int, int)} may
not read as many characters as requested (most likely because of reaching EOF).

@param input  where to read input from
@param buffer destination
@param offset inital offset into buffer
@param length length to read, must
@throws IOException              if there is a problem reading the file
@throws IllegalArgumentException if length is negative
@throws EOFException             if the number of characters read was incorrect
@since 2.2
pay-java-common/src/main/java/com/egzosn/pay/common/util/IOUtils.java