ExtractNativeMethodsFromTypes() private static method

private static ExtractNativeMethodsFromTypes ( ICollection types, ArrayList res ) : void
types ICollection
res System.Collections.ArrayList
return void
 private static void ExtractNativeMethodsFromTypes(ICollection <TypeDefinition> types, ArrayList res)
 {
     using (IEnumerator <TypeDefinition> enumerator1 = ((IEnumerable <TypeDefinition>)types).GetEnumerator())
     {
         while (((IEnumerator)enumerator1).MoveNext())
         {
             TypeDefinition current1 = enumerator1.Current;
             using (Collection <MethodDefinition> .Enumerator enumerator2 = current1.get_Methods().GetEnumerator())
             {
                 // ISSUE: explicit reference operation
                 while (((Collection <MethodDefinition> .Enumerator)@enumerator2).MoveNext())
                 {
                     // ISSUE: explicit reference operation
                     MethodDefinition current2 = ((Collection <MethodDefinition> .Enumerator)@enumerator2).get_Current();
                     if (current2.get_IsStatic() && current2.get_IsPInvokeImpl() && current2.get_PInvokeInfo().get_Module().get_Name().Equals("__Internal"))
                     {
                         if (res.Contains((object)((MemberReference)current2).get_Name()))
                         {
                             throw new SystemException("Duplicate native method found : " + ((MemberReference)current2).get_Name() + ". Please check your source carefully.");
                         }
                         res.Add((object)((MemberReference)current2).get_Name());
                     }
                 }
             }
             if (current1.get_HasNestedTypes())
             {
                 MonoAOTRegistration.ExtractNativeMethodsFromTypes((ICollection <TypeDefinition>)current1.get_NestedTypes(), res);
             }
         }
     }
 }
 private static void ExtractNativeMethodsFromTypes(ICollection <TypeDefinition> types, ArrayList res)
 {
     foreach (TypeDefinition current in types)
     {
         using (Collection <MethodDefinition> .Enumerator enumerator2 = current.get_Methods().GetEnumerator())
         {
             while (enumerator2.MoveNext())
             {
                 MethodDefinition current2 = enumerator2.get_Current();
                 if (current2.get_IsStatic() && current2.get_IsPInvokeImpl() && current2.get_PInvokeInfo().get_Module().get_Name().Equals("__Internal"))
                 {
                     if (res.Contains(current2.get_Name()))
                     {
                         throw new SystemException("Duplicate native method found : " + current2.get_Name() + ". Please check your source carefully.");
                     }
                     res.Add(current2.get_Name());
                 }
             }
         }
         if (current.get_HasNestedTypes())
         {
             MonoAOTRegistration.ExtractNativeMethodsFromTypes(current.get_NestedTypes(), res);
         }
     }
 }
        private static ArrayList BuildNativeMethodList(AssemblyDefinition[] assemblies)
        {
            ArrayList res = new ArrayList();

            foreach (AssemblyDefinition assembly in assemblies)
            {
                if (!"System".Equals(((AssemblyNameReference)assembly.get_Name()).get_Name()))
                {
                    MonoAOTRegistration.ExtractNativeMethodsFromTypes((ICollection <TypeDefinition>)assembly.get_MainModule().get_Types(), res);
                }
            }
            return(res);
        }
        private static ArrayList BuildNativeMethodList(AssemblyDefinition[] assemblies)
        {
            ArrayList arrayList = new ArrayList();

            for (int i = 0; i < assemblies.Length; i++)
            {
                AssemblyDefinition assemblyDefinition = assemblies[i];
                if (!"System".Equals(assemblyDefinition.Name.Name))
                {
                    MonoAOTRegistration.ExtractNativeMethodsFromTypes(assemblyDefinition.MainModule.Types, arrayList);
                }
            }
            return(arrayList);
        }
 private static void ExtractNativeMethodsFromTypes(ICollection <TypeDefinition> types, ArrayList res)
 {
     foreach (TypeDefinition current in types)
     {
         foreach (MethodDefinition current2 in current.Methods)
         {
             if (current2.IsStatic && current2.IsPInvokeImpl && current2.PInvokeInfo.Module.Name.Equals("__Internal"))
             {
                 if (res.Contains(current2.Name))
                 {
                     throw new SystemException("Duplicate native method found : " + current2.Name + ". Please check your source carefully.");
                 }
                 res.Add(current2.Name);
             }
         }
         if (current.HasNestedTypes)
         {
             MonoAOTRegistration.ExtractNativeMethodsFromTypes(current.NestedTypes, res);
         }
     }
 }