static VariableDeclarationSyntax DeclareVariable(this IVariableDeclarationModel decl, RoslynTranslator translator, bool useInitialization, bool isField) { bool canBeImplicitlyTyped = !isField; bool initialized = false; var varDeclarator = SyntaxFactory.VariableDeclarator(SyntaxFactory.Identifier(decl.VariableName)); if (useInitialization && translator.Stencil.RequiresInitialization(decl)) { if (decl.InitializationModel != null) { var expression = translator.BuildNode(decl.InitializationModel).SingleOrDefault() as ExpressionSyntax; varDeclarator = varDeclarator.WithInitializer(SyntaxFactory.EqualsValueClause(expression)); initialized = true; } } VariableDeclarationSyntax varDeclaration; if (canBeImplicitlyTyped && initialized) { varDeclaration = SyntaxFactory.VariableDeclaration(SyntaxFactory.IdentifierName("var")); } else { varDeclaration = SyntaxFactory.VariableDeclaration(decl.DataType.ToTypeSyntax(translator.Stencil)); } return(varDeclaration.WithVariables(SyntaxFactory.SingletonSeparatedList(varDeclarator))); }