public byte readByte() throws EOFException {
        ByteBuffer bb = null;
        try {
            bb = link.getFirst();
        } catch(NoSuchElementException e) {}
        if (bb == null || bb.remaining() == 0) {
            throw new EndOfBufferException();
        }
        byte result = bb.get();
        incrReadOneByteCount();
        if (bb.remaining() == 0) {
            removeFirstLink(bb);
        }
        return result;
    }