private void PrintNewExpressionWithInitializers(IBlockExpression blockExpression) {
var i = 0;
foreach (var s in blockExpression.BlockStatement.Statements) {
if (i++ == 0) {
var lds = s as ILocalDeclarationStatement;
this.Traverse(lds.InitialValue);
this.sourceEmitterOutput.WriteLine("{");
this.sourceEmitterOutput.IncreaseIndent();
continue;
}
var expressionStatement = (IExpressionStatement)s;
this.sourceEmitterOutput.Write("", true);
var assign = expressionStatement.Expression as IAssignment;
if (assign != null) {
var def = assign.Target.Definition;
PrintBoundExpressionDefinition(null, def, false);
this.sourceEmitterOutput.Write(" = ");
this.Traverse(assign.Source);
this.sourceEmitterOutput.WriteLine(", ");
continue;
}
var methodCall = expressionStatement.Expression as IMethodCall;
if (methodCall != null) {
this.PrintMethodReferenceName(methodCall.MethodToCall, NameFormattingOptions.OmitContainingNamespace | NameFormattingOptions.OmitContainingType);
this.sourceEmitterOutput.Write(" = ");
foreach (var a in methodCall.Arguments) {
this.Traverse(a);
break;
}
this.sourceEmitterOutput.WriteLine(", ");
continue;
}
Contract.Assume(false);
}
this.sourceEmitterOutput.DecreaseIndent();
this.sourceEmitterOutput.Write("}", true);
}