getFingerprint(); $latest = $this->getLatest($fingerprint); if ($latest !== null && $latest->getHash() === $entry->getHash()) { return $entry->withVersion($latest->getVersion()); } $version = $latest === null ? new KnowledgeVersion(1, $entry->getHash(), $entry->getRetrievedAt()) : $latest->getVersion()->next($entry->getHash(), $entry->getRetrievedAt()); $versionedEntry = $entry->withVersion($version); $this->entries[$fingerprint][] = $versionedEntry; return $versionedEntry; } public function get(string $fingerprint): array { return $this->entries[$fingerprint] ?? []; } public function getLatest(string $fingerprint): ?KnowledgeEntry { $entries = $this->get($fingerprint); return $entries === [] ? null : $entries[array_key_last($entries)]; } public function count(string $fingerprint): int { return count($this->get($fingerprint)); } }