protected function __construct(string $namespace, string $name, int $alternate_id = 0)
{
assert(!empty($name), "The name cannot be empty");
assert(!empty($namespace), "The namespace cannot be empty");
assert($namespace[0] === '\\', "The first character of a namespace must be \\");
parent::__construct($name);
$this->namespace = $namespace;
$this->alternate_id = $alternate_id;
}