public function progress(): AchievementCriteriaProgress
    {
        if (!is_null($this->progress)) {
            return $this->progress;
        }

        return $this->progress = new AchievementCriteriaProgress(
            $this->data['progress']['value'] ?? 0,
            $this->data['progress']['changed'] ?? false,
            $this->data['progress']['completed'] ?? false,
            $this->data['progress']['data'] ?? []
        );
    }