public virtual void VisitObjectInitializerExpression <TCreateObjectExpression, TExpression, TObjectInitializer>(
     IObjectInitializerExpression <TCreateObjectExpression, TExpression, TObjectInitializer> objectInitializerExpression)
     where TCreateObjectExpression : ICreateObjectExpression
     where TExpression : IExpression
     where TObjectInitializer : IHasObjectInitializers <TExpression, TObjectInitializer>
 {
     Visit(objectInitializerExpression);
 }
        public static void VisitObjectInitializerExpressionChildren<TCreateObjectExpression, TExpression, TObjectInitializer>(
            IObjectInitializerExpression<TCreateObjectExpression, TExpression, TObjectInitializer> objectInitializerExpression,
            IGenericExpressionVisitor visitor)
            where TCreateObjectExpression : ICreateObjectExpression
            where TExpression : IExpression
            where TObjectInitializer : IHasObjectInitializers<TExpression, TObjectInitializer>
        {
            VisitIfNotNull(objectInitializerExpression.CreateObjectExpression, visitor);
            foreach (TExpression member in objectInitializerExpression.Members.Values)
            {
                VisitIfNotNull(member, visitor);
            }

            foreach (IReadOnlyList<TExpression> element in objectInitializerExpression.Elements)
            {
                VisitCollection(element, visitor);
            }
        }
 public override void VisitObjectInitializerExpression <TCreateObjectExpression, TExpression, TObjectInitializer>(
     IObjectInitializerExpression <TCreateObjectExpression, TExpression, TObjectInitializer> objectInitializerExpression)
 {
     Steps.Add(new WriteExpression <TCreateObjectExpression>(objectInitializerExpression.CreateObjectExpression));
     Steps.AddObjectInitializerSteps(objectInitializerExpression);
 }