/// <summary> /// Find any typedegs where the passed in value is the real type /// </summary> /// <param name="target"></param> /// <returns></returns> /// <remarks></remarks> private List <NativeTypeDef> FindTypeDefsTargeting(NativeType target) { // Build the cache if (_resolvedTypeDefList == null) { _resolvedTypeDefList = new List <NativeTypeDef>(_bag.FindResolvedTypeDefs()); } List <NativeTypeDef> list = new List <NativeTypeDef>(); // First look in the symbol bag foreach (NativeTypeDef td in _resolvedTypeDefList) { if (object.ReferenceEquals(td.RealTypeDigged, target)) { list.Add(td); } } // Next look in the native storage for more types // TODO: this cast is bad. var lookup = _bag.NextSymbolLookup; foreach (var name in lookup.NativeNames.Where(x => x.Kind == NativeNameKind.TypeDef)) { var typeDef = lookup.GetGlobalSymbol <NativeTypeDef>(name); if (typeDef.RealType == target) { list.Add(typeDef); } } return(list); }