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;
}