static function cachedQuery($cls, $qry, $expiry = 3600)
 {
     $c = Memcached_DataObject::memcache();
     if (!$c) {
         $inst = new $cls();
         $inst->query($qry);
         return $inst;
     }
     $key_part = Cache::keyize($cls) . ':' . md5($qry);
     $ckey = Cache::key($key_part);
     $stored = $c->get($ckey);
     if ($stored !== false) {
         return new ArrayWrapper($stored);
     }
     $inst = new $cls();
     $inst->query($qry);
     $cached = array();
     while ($inst->fetch()) {
         $cached[] = clone $inst;
     }
     $inst->free();
     $c->set($ckey, $cached, Cache::COMPRESSED, $expiry);
     return new ArrayWrapper($cached);
 }