public void setValue(Object target, Class<?> type, long fieldOffset,
			Object value) {
		if (type == int.class)
			unsafe.putInt(target, fieldOffset, (Integer) value);
		else if (type == short.class)
			unsafe.putShort(target, fieldOffset, (Short) value);
		else if (type == long.class)
			unsafe.putLong(target, fieldOffset, (Long) value);
		else if (type == byte.class)
			unsafe.putByte(target, fieldOffset, (Byte) value);
		else if (type == float.class)
			unsafe.putFloat(target, fieldOffset, (Float) value);
		else if (type == double.class)
			unsafe.putDouble(target, fieldOffset, (Double) value);
		else if (type == boolean.class)
			unsafe.putBoolean(target, fieldOffset, (Boolean) value);
		else if (type == char.class)
			unsafe.putChar(target, fieldOffset, (Character) value);
		else
			unsafe.putObject(target, fieldOffset, value);
	}