private MethodDesc[] CreateMethodSlotsFromTypeDef(TypeDefinition typeDef) { var methods = new List <MethodDefinition>(); methods.AddRange(GetVirtualMethodDefsFromTypeDef(typeDef)); // virtual methods.AddRange(typeDef.Methods.Where(x => !x.IsVirtual && !x.IsStatic)); // non-virtual methods.AddRange(typeDef.Methods.Where(x => x.IsStatic)); // static return(methods .Select((x, i) => { var methodDesc = _classLoader.LookupMethodDescFromMethodDef(x); if (methodDesc == null) { methodDesc = new MethodDesc() { MdToken = x.MetadataToken, Name = x.FullName, Definition = x, Slot = i }; _classLoader.RegisterMethodDesc(x, methodDesc); } return methodDesc; }) .ToArray()); }