LastValidRids UpdateLastValidRids(DynamicModuleData data, CorModuleDef module) { var old = data.LastValidRids; // Linear search but shouldn't be a problem except the first time if we load a big file for (; ; data.LastValidRids.TypeDefRid++) { if (!module.IsValidToken(new MDToken(Table.TypeDef, data.LastValidRids.TypeDefRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.FieldRid++) { if (!module.IsValidToken(new MDToken(Table.Field, data.LastValidRids.FieldRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.MethodRid++) { if (!module.IsValidToken(new MDToken(Table.Method, data.LastValidRids.MethodRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.ParamRid++) { if (!module.IsValidToken(new MDToken(Table.Param, data.LastValidRids.ParamRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.EventRid++) { if (!module.IsValidToken(new MDToken(Table.Event, data.LastValidRids.EventRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.PropertyRid++) { if (!module.IsValidToken(new MDToken(Table.Property, data.LastValidRids.PropertyRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.GenericParamRid++) { if (!module.IsValidToken(new MDToken(Table.GenericParam, data.LastValidRids.GenericParamRid + 1).Raw)) { break; } } for (; ; data.LastValidRids.GenericParamConstraintRid++) { if (!module.IsValidToken(new MDToken(Table.GenericParamConstraint, data.LastValidRids.GenericParamConstraintRid + 1).Raw)) { break; } } return(old); }