public boolean writeHash(ByteBuffer buf, long hash) {
		int size = getSize(hash);
		if (size == -1) {
			if (buf.remaining() < 9) {
				return false;
			}
			add(hash);
			buf.put((byte) 0);
			buf.putLong(hash);
			return true;
		}
		int prefix = (int) (hash >>> 56);
		if ((prefix & 0xFC) == 0) {
			if (buf.remaining() < size + 1) {
				return false;
			}
			buf.put((byte) 1);
		} else if (buf.remaining() < size) {
			return false;
		}
		int shift = 56;
		for (int i = 0; i < size; i++) {
			byte b = (byte) (hash >> shift);
			buf.put(b);
			shift -= 8;
		}
		return true;
	}