public int writeLongS (long value, boolean optimizePositive) throws KryoException {
		if (!optimizePositive) value = (value << 1) ^ (value >> 63);
		if (value >>> 7 == 0) {
			require(1);
			niobuffer.put((byte)value);
			position += 1;
			return 1;
		}
		if (value >>> 14 == 0) {
			require(2);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7));
			position += 2;
			return 2;
		}
		if (value >>> 21 == 0) {
			require(3);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7 | 0x80));
			niobuffer.put((byte)(value >>> 14));
			position += 3;
			return 3;
		}
		if (value >>> 28 == 0) {
			require(4);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7 | 0x80));
			niobuffer.put((byte)(value >>> 14 | 0x80));
			niobuffer.put((byte)(value >>> 21));
			position += 4;
			return 4;
		}
		if (value >>> 35 == 0) {
			require(5);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7 | 0x80));
			niobuffer.put((byte)(value >>> 14 | 0x80));
			niobuffer.put((byte)(value >>> 21 | 0x80));
			niobuffer.put((byte)(value >>> 28));
			position += 5;
			return 5;
		}
		if (value >>> 42 == 0) {
			require(6);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7 | 0x80));
			niobuffer.put((byte)(value >>> 14 | 0x80));
			niobuffer.put((byte)(value >>> 21 | 0x80));
			niobuffer.put((byte)(value >>> 28 | 0x80));
			niobuffer.put((byte)(value >>> 35));
			position += 6;
			return 6;
		}
		if (value >>> 49 == 0) {
			require(7);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7 | 0x80));
			niobuffer.put((byte)(value >>> 14 | 0x80));
			niobuffer.put((byte)(value >>> 21 | 0x80));
			niobuffer.put((byte)(value >>> 28 | 0x80));
			niobuffer.put((byte)(value >>> 35 | 0x80));
			niobuffer.put((byte)(value >>> 42));
			position += 7;
			return 7;
		}
		if (value >>> 56 == 0) {
			require(8);
			niobuffer.put((byte)((value & 0x7F) | 0x80));
			niobuffer.put((byte)(value >>> 7 | 0x80));
			niobuffer.put((byte)(value >>> 14 | 0x80));
			niobuffer.put((byte)(value >>> 21 | 0x80));
			niobuffer.put((byte)(value >>> 28 | 0x80));
			niobuffer.put((byte)(value >>> 35 | 0x80));
			niobuffer.put((byte)(value >>> 42 | 0x80));
			niobuffer.put((byte)(value >>> 49));
			position += 8;
			return 8;
		}
		require(9);
		niobuffer.put((byte)((value & 0x7F) | 0x80));
		niobuffer.put((byte)(value >>> 7 | 0x80));
		niobuffer.put((byte)(value >>> 14 | 0x80));
		niobuffer.put((byte)(value >>> 21 | 0x80));
		niobuffer.put((byte)(value >>> 28 | 0x80));
		niobuffer.put((byte)(value >>> 35 | 0x80));
		niobuffer.put((byte)(value >>> 42 | 0x80));
		niobuffer.put((byte)(value >>> 49 | 0x80));
		niobuffer.put((byte)(value >>> 56));
		position += 9;
		return 9;
	}