public static string GetBakingFieldName(this PropertyDeclarationSyntax property) { var get = property.GetGetAccessor(); var returns = get?.Body.DescendantNodes <ReturnStatementSyntax>().FirstOrDefault(); var fieldIdentifier = returns?.Expression as IdentifierNameSyntax; if (fieldIdentifier is not null) { return(fieldIdentifier.Identifier.ValueText); } var set = property.GetSetAccessor(); var setValue = set?.Body .DescendantNodes <AssignmentExpressionSyntax>() .FirstOrDefault(s => s.OperatorToken.IsKind(SyntaxKind.EqualsToken) && s.Right is IdentifierNameSyntax ident && ident.Identifier.ValueText == "value"); if (setValue is not null && setValue.Left is IdentifierNameSyntax ident) { return(ident.Identifier.ValueText); } return(null); }