public override SyntaxNode VisitElementAccessExpression(ElementAccessExpressionSyntax node) { var elements = GetListCollectionInitializerElements(node); if (elements != null) { if (elements.Count > 0) { var type = GetArgumentType(elements[0]); var syntaxList = new SeparatedSyntaxList<ExpressionSyntax>(); var intializerExpr = Syntax.InitializerExpression(SyntaxKind.CollectionInitializerExpression, syntaxList.Add(elements.ToArray())); return Syntax.ParseExpression(string.Format("new System.Collections.Generic.List<{1}>{0}", intializerExpr, type)); } else { //no elements of list - returning empty list of objects return Syntax.ParseExpression("new System.Collections.Generic.List<Object>()"); } } return base.VisitElementAccessExpression(node); } private TypeSymbol GetArgumentType(ExpressionSyntax expression) { var info = semanticModel.GetTypeInfo(expression); var resultantType = info.Type; return resultantType; }