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()); } } }