protected function isOutdated($basePath, $sourceFile, $targetFile, $sourceExtension, $targetExtension)
    {
        $resultModificationTime = @filemtime("$basePath/$targetFile");
        if ($resultModificationTime === false || $resultModificationTime === null) {
            return true;
        }

        if ($resultModificationTime < @filemtime("$basePath/$sourceFile")) {
            return true;
        }

        if ($this->isOutdatedCallback === null) {
            return false;
        }

        return call_user_func($this->isOutdatedCallback, $basePath, $sourceFile, $targetFile, $sourceExtension, $targetExtension);
    }