private IEnumerable <ulong> EnumerateObjectsOfTypes(ulong start, ulong stop, HashSet <string> types) { ClrHeap heap = _runtime.Heap; foreach (ulong ptr in EnumeratePointersInRange(start, stop)) { if (_runtime.ReadPointer(ptr, out ulong obj)) { if (heap.IsInHeap(obj)) { ClrType type = heap.GetObjectType(obj); int sanity = 0; while (type != null) { if (types.Contains(type.Name)) { yield return(obj); break; } type = type.BaseType; if (sanity++ == 16) { break; } } } } } }