public void GarbageCollect() { HashSet <object> referenceThatAreAccessibleFromRoot = TraverseReferences(); List <SyncSource> removeSyncSources = _referencePool.GetNonOccuringReferences(referenceThatAreAccessibleFromRoot); foreach (SyncSource removeSyncSource in removeSyncSources) { RemoveReference(removeSyncSource.BaseObject); } }