@Override
    public void deserialize(Buffer buf) {
        super.deserialize(buf);
        short flag1 = buf.readUByte();
        showExperience = BooleanByteWrapper.getFlag(flag1, 0);
        showExperienceLevelFloor = BooleanByteWrapper.getFlag(flag1, 1);
        showExperienceNextLevelFloor = BooleanByteWrapper.getFlag(flag1, 2);
        showExperienceFightDelta = BooleanByteWrapper.getFlag(flag1, 3);
        showExperienceForGuild = BooleanByteWrapper.getFlag(flag1, 4);
        showExperienceForMount = BooleanByteWrapper.getFlag(flag1, 5);
        isIncarnationExperience = BooleanByteWrapper.getFlag(flag1, 6);
        experience = buf.readDouble();
        if (experience < 0)
            throw new RuntimeException("Forbidden value on experience = " + experience + ", it doesn't respect the following condition : experience < 0");
        experienceLevelFloor = buf.readDouble();
        if (experienceLevelFloor < 0)
            throw new RuntimeException("Forbidden value on experienceLevelFloor = " + experienceLevelFloor + ", it doesn't respect the following condition : experienceLevelFloor < 0");
        experienceNextLevelFloor = buf.readDouble();
        if (experienceNextLevelFloor < 0)
            throw new RuntimeException("Forbidden value on experienceNextLevelFloor = " + experienceNextLevelFloor + ", it doesn't respect the following condition : experienceNextLevelFloor < 0");
        experienceFightDelta = buf.readInt();
        experienceForGuild = buf.readInt();
        if (experienceForGuild < 0)
            throw new RuntimeException("Forbidden value on experienceForGuild = " + experienceForGuild + ", it doesn't respect the following condition : experienceForGuild < 0");
        experienceForMount = buf.readInt();
        if (experienceForMount < 0)
            throw new RuntimeException("Forbidden value on experienceForMount = " + experienceForMount + ", it doesn't respect the following condition : experienceForMount < 0");
        rerollExperienceMul = buf.readInt();
    }