call method
Implementation
R call(List<dynamic> args) {
final key = _keyFn(args);
if (_cache.containsKey(key)) {
// Move to most recent
_accessOrder.remove(key);
_accessOrder.add(key);
return _cache[key] as R;
}
final result = _fn(args);
_cache[key] = result;
_accessOrder.add(key);
// Evict if over capacity
while (_accessOrder.length > maxCacheSize) {
final evicted = _accessOrder.removeAt(0);
_cache.remove(evicted);
}
return result;
}