protected override ClassDeclarationSyntax GenerateResultClass(IEnumerable <PropertyGroup> propertyGroups) { var resultClass = GenerateClassForProperties(ResultClassName, propertyGroups.SelectMany(g => g.Properties)); var parseMethodBody = resultClass.DescendantNodes() .OfType <MethodDeclarationSyntax>() .Single(m => m.Identifier.ValueText == "Parse") .Body; var statements = parseMethodBody.Statements; var newStatement = SyntaxEx.Assignment( SyntaxFactory.IdentifierName("element"), SyntaxEx.Invocation( SyntaxEx.MemberAccess(SyntaxEx.Invocation(SyntaxEx.MemberAccess("element", "Elements")), "Single"))); var newStatements = new[] { newStatement }.Concat(statements); var newBody = SyntaxEx.Block(newStatements); return(resultClass.ReplaceNode(parseMethodBody, newBody)); }