public function startUpload($name, $content, array $options = [])
    {
        $name         = rawurlencode($name);
        $driveLocator = "/drives/{$this->parentReference->driveId}";
        $itemLocator  = "/items/{$this->id}";
        $endpoint     = "$driveLocator$itemLocator:/$name:/createUploadSession";

        $response = $this
            ->graph
            ->createRequest('POST', $endpoint)
            ->execute();

        $status = $response->getStatus();

        if ($status != 200) {
            throw new \Exception("Unexpected status code produced by 'POST $endpoint': $status");
        }

        $uploadSession = $response->getResponseAsObject(UploadSession::class);

        return new UploadSessionProxy($this->graph, $uploadSession, $content, $options);
    }