public function load(array $fixturesFiles, array $parameters = [], array $objects = [], PurgeMode $purgeMode = null): array
    {
        $errorTracker = new ErrorTracker();
        $filesTracker = new FileTracker(...$fixturesFiles);
        $attempts = 0;
        $set = new ObjectSet(
            new ParameterBag($parameters),
            new ObjectBag($objects)
        );
        while (true) {
            $set = $this->tryToLoadFiles($filesTracker, $errorTracker, $set);
            if ($filesTracker->allFilesHaveBeenLoaded()) {
                break;
            }

            if ($this->maxPass <= $attempts) {
                throw MaxPassReachedException::createForLimit($this->maxPass, $filesTracker, $errorTracker);
            }
            ++$attempts;
        }

        return $set->getObjects();
    }