@Override
    public void deserialize(Buffer buf) {
        major = buf.readByte();
        if (major < 0)
            throw new RuntimeException("Forbidden value on major = " + major + ", it doesn't respect the following condition : major < 0");
        minor = buf.readByte();
        if (minor < 0)
            throw new RuntimeException("Forbidden value on minor = " + minor + ", it doesn't respect the following condition : minor < 0");
        release = buf.readByte();
        if (release < 0)
            throw new RuntimeException("Forbidden value on release = " + release + ", it doesn't respect the following condition : release < 0");
        revision = buf.readInt();
        if (revision < 0)
            throw new RuntimeException("Forbidden value on revision = " + revision + ", it doesn't respect the following condition : revision < 0");
        patch = buf.readByte();
        if (patch < 0)
            throw new RuntimeException("Forbidden value on patch = " + patch + ", it doesn't respect the following condition : patch < 0");
        buildType = buf.readByte();
        if (buildType < 0)
            throw new RuntimeException("Forbidden value on buildType = " + buildType + ", it doesn't respect the following condition : buildType < 0");
    }