public abstract int read(ByteBuffer dst) throws IOException;
public abstract long read(ByteBuffer[] dsts, int offset, int length) throws IOException;
  public abstract int read(ByteBuffer dst) throws IOException;