public function getContentChanges(
        $repositoryId,
        &$changeLogToken = null,
        $includeProperties = false,
        $includePolicyIds = false,
        $includeAcl = false,
        $maxItems = null,
        ExtensionDataInterface $extension = null
    ) {
        $url = $this->getRepositoryUrl($repositoryId, Constants::SELECTOR_CONTENT_CHANGES);

        $url->getQuery()->modify(
            [
                Constants::PARAM_PROPERTIES => $includeProperties ? 'true' : 'false',
                Constants::PARAM_POLICY_IDS => $includePolicyIds ? 'true' : 'false',
                Constants::PARAM_ACL => $includeAcl ? 'true' : 'false',
                Constants::PARAM_SUCCINCT => $this->getSuccinct() ? 'true' : 'false',
            ]
        );

        if ($changeLogToken !== null) {
            $url->getQuery()->modify([Constants::PARAM_CHANGE_LOG_TOKEN => (string) $changeLogToken]);
        }

        if ($maxItems > 0) {
            $url->getQuery()->modify([Constants::PARAM_MAX_ITEMS => (string) $maxItems]);
        }

        $responseData = (array) $this->readJson($url);

        // $changeLogToken was passed by reference. The value is changed here
        $changeLogToken = $responseData[JSONConstants::JSON_OBJECTLIST_CHANGE_LOG_TOKEN] ?? null;

        // TODO Implement Cache
        return $this->getJsonConverter()->convertObjectList($responseData);
    }