code: @Override
    public int read(CharBuffer target) throws IOException {
      try {
        beforeRead(target != null ? target.length() : 0);
        int n = in.read(target);
        afterRead(n);
        return n;
      } catch (IOException e) {
        handleIOException(e);
        return -1;
      }
    }
docs: Invokes the delegate's <code>read(CharBuffer)</code> method.
  @param target the char buffer to read the characters into
  @return the number of characters read or -1 if the end of stream
  @throws IOException if an I/O error occurs
  @since 2.0