protected void RemoveNotFoundObjRefs(IObjRef[] objRefsToRemove) { hardRefObjRefsToLoad.RemoveAll(objRefsToRemove); objRefsToLoad.RemoveAll(objRefsToRemove); for (int a = childNodes.Count; a-- > 0;) { CacheDependencyNode childNode = childNodes[a]; childNode.RemoveNotFoundObjRefs(objRefsToRemove); // Hold cache values as hard ref to prohibit cache loss due to GC IList <IObjRef> hardRefRequest = childNode.hardRefObjRefsToLoad.ToList(); childNode.privilegedHardRefResult = childNode.rootCache.GetObjects(hardRefRequest, failInCacheHierarchyAndCacheValueResult); } }