*         larger array.
     */
    public boolean ensureFit(int length) {

        if (length > 0 && length * SIZE_GROWTH_DENOMINATOR < _size) {
            length = _size / SIZE_GROWTH_DENOMINATOR;
        }
        final int newSize = _size + length;
        if (newSize <= _bytes.length) {
            return false;
        }
        int newArraySize = ((newSize + SIZE_GRANULARITY - 1) / SIZE_GRANULARITY) * SIZE_GRANULARITY;
        if (newArraySize > _maximumSize)
            newArraySize = _maximumSize;
        if (newArraySize < newSize) {
            throw new ConversionException("Requested size=" + newSize + " exceeds maximum size=" + _maximumSize);
        }
        byte[] bytes = new byte[newArraySize];
        System.arraycopy(_bytes, 0, bytes, 0, _size);
        _bytes = bytes;

        return true;
    }