public function __construct($part1 = 0, $part2 = 0, $part3 = 0, $part4 = 0, $version = null)
{
$this->parts[0] = (int) $part1;
$this->parts[1] = (int) $part2;
$this->parts[2] = (int) $part3;
$this->parts[3] = (int) $part4;
$this->version = $version === null ? ($this->parts[1] & 0xf000) >> 12 : (int) $version;
}