public override IEnumerable <ClrType> EnumerateTypes() { var heap = (DesktopGCHeap)_runtime.GetHeap(); var mtList = _runtime.GetMethodTableList(_address); if (_typesLoaded) { foreach (var type in heap.EnumerateTypes()) { if (type.Module == this) { yield return(type); } } } else { if (mtList != null) { foreach (ulong mt in mtList) { if (mt != _runtime.ArrayMethodTable) { // prefetch element type, as this also can load types var type = heap.GetGCHeapType(mt, 0, 0); if (type != null) { yield return(type); } } } } _typesLoaded = true; } }