package core // Links store type LinkStore[K comparable, V any] struct { entries map[K]*V arena Arena[V] } func (s *LinkStore[K, V]) Get(key K) *V { value := s.entries[key] if value != nil { return value } if s.entries == nil { s.entries = make(map[K]*V) } value = s.arena.New() s.entries[key] = value return value } func (s *LinkStore[K, V]) Has(key K) bool { _, ok := s.entries[key] return ok } func (s *LinkStore[K, V]) TryGet(key K) *V { return s.entries[key] }