my ($class,$id,$version,$data) = @_; if (my $cached = $cache->{$id}) { return $cached if $version <= $cached->{version}; return $cache->re_new($data); unless $cached->has_changed; } return $cache->{$id} = $class->new($data);