public static SqlMemberIndexerScalarExpression CreateSqlMemberIndexerScalarExpression(
            SqlScalarExpression first,
            SqlScalarExpression second,
            params SqlScalarExpression[] everythingElse)
        {
            List <SqlScalarExpression> segments = new List <SqlScalarExpression>(2 + everythingElse.Length);

            segments.Add(first);
            segments.Add(second);
            segments.AddRange(everythingElse);

            SqlMemberIndexerScalarExpression rootExpression = SqlMemberIndexerScalarExpression.Create(first, second);

            foreach (SqlScalarExpression indexer in segments.Skip(2))
            {
                rootExpression = SqlMemberIndexerScalarExpression.Create(rootExpression, indexer);
            }

            return(rootExpression);
        }
 public override SqlObject Visit(SqlMemberIndexerScalarExpression sqlMemberIndexerScalarExpression)
 {
     return(SqlMemberIndexerScalarExpression.Create(
                sqlMemberIndexerScalarExpression.MemberExpression.Accept(this) as SqlScalarExpression,
                sqlMemberIndexerScalarExpression.IndexExpression.Accept(this) as SqlScalarExpression));
 }