private void ConvertInstanceMembersToStaticMembers() { // Mark the following members on Array, ArrayList, Queue and Stack // as generated static, as they aren't implemented as instance/prototype // members at runtime. string[] members = new string[] { "Add", "AddRange", "Aggregate", "Clear", "Clone", "Contains", "Dequeue", "Enqueue", "Every", "Extract", "Filter", "ForEach", "GetEnumerator", "GroupBy", "Index", "IndexOf", "Insert", "InsertRange", "Map", "Peek", "Remove", "RemoveAt", "RemoveRange", "Some" }; foreach (TypeSymbol typeSymbol in _importedTypes) { if ((typeSymbol.Type == SymbolType.Class) && (typeSymbol.Name.Equals("Array", StringComparison.Ordinal) || typeSymbol.Name.Equals("ArrayList", StringComparison.Ordinal) || typeSymbol.Name.Equals("ArrayGrouping", StringComparison.Ordinal) || typeSymbol.Name.Equals("Queue", StringComparison.Ordinal) || typeSymbol.Name.Equals("Stack", StringComparison.Ordinal))) { foreach (string memberName in members) { MethodSymbol methodSymbol = typeSymbol.GetMember(memberName) as MethodSymbol; if ((methodSymbol != null) && ((methodSymbol.Visibility & MemberVisibility.Static) == 0)) { methodSymbol.GenerateAsStaticMethod(); } } } } }