public static function create(string $id, int $maxLocks, int $permissions = 0600): self {
        if ($maxLocks < 1) {
            throw new \Error("Number of locks must be greater than 0");
        }

        $semaphore = new self($id);
        $semaphore->init($maxLocks, $permissions);
        return $semaphore;
    }