public override UstNode VisitForStatement(ForStatementSyntax node) { Statement[] initializers = node.Declaration != null ? new Statement[] { new ExpressionStatement((VariableDeclarationExpression)VisitVariableDeclaration(node.Declaration)) } : node.Initializers.Select(init => { Expression ex = (Expression)VisitAndReturnNullIfError(init); return(ex == null ? null : new ExpressionStatement(ex, init.GetTextSpan(), FileNode)); }) .ToArray(); var condition = (Expression)base.Visit(node.Condition); var iterators = node.Incrementors.Select(inc => (Expression)VisitAndReturnNullIfError(inc)) .ToArray(); var statement = (Statement)base.Visit(node.Statement); var result = new ForStatement(initializers, condition, iterators, statement, node.GetTextSpan(), FileNode); return(result); }