Still think this is kind of a hack.

If we had possibility to fetch draft locations (that extend or reuse Location class), then we could simply load them and pass them on to canUser(), like:
```php
         $content = $this->internalLoadContent(
             $versionInfo->contentInfo->id,
             null,
             $versionInfo->versionNo
         );
 
         if ( !$content->getVersionInfo()->getContentInfo()->published )
         {
             $spiLocationDrafts = $this->persistenceHandler->locationHandler()->loadLocationDraftsByContent(
                 $content->getVersionInfo()->getContentInfo()->id
             );
             if ( !$this->repository->canUser( 'content', 'edit', $content, $spiLocationDrafts ) )
             {
                 throw new UnauthorizedException( 'content', 'create' );
             }
         }
         else if ( !$this->repository->canUser( 'content', 'edit', $content ) )
         {
             throw new UnauthorizedException( 'content', 'edit' );
         }
```

Then limitations would do the work just like intended, and no custom permission code is done in service.