internal IEnumerable <T> Deserialize <T> (string filter, string xml) where T : Object
        {
            if (!object_cache.ContainsKey(filter))
            {
                object_cache[filter] = new Dictionary <string, WeakReference> ();
            }

            using (var reader = new StringReader(xml)) {
                var navigator = new XPathDocument(reader).CreateNavigator();
                if (navigator.MoveToChild("DIDL-Lite", Schemas.DidlLiteSchema) && navigator.MoveToFirstChild())
                {
                    do
                    {
                        yield return(DerserializeObject <T> (filter, navigator));
                    } while (navigator.MoveToNext());
                }
            }
        }