private IEnumerable <byte> ReadCustomMetadata(ManagedProcedureSymbol function) { foreach (OemSymbol oem in function.Children.OfType <OemSymbol>()) { if (oem.Id == MsilMetadataGuid) { IBinaryReader reader = oem.UserDataReader; string name = reader.ReadCStringWide().String; if (name == "MD2") { byte version = reader.ReadByte(); if (version == 4) { int count = reader.ReadByte(); reader.Align(4); for (int i = 0; i < count; i++) { long start = reader.Position; byte entryVersion = reader.ReadByte(); byte kind = reader.ReadByte(); reader.Align(4); yield return(kind); uint numberOfBytesInItem = reader.ReadUint(); reader.Position = start + numberOfBytesInItem; } } } } } }