internal static bool TryGetBackingField(IPropertySymbol property, SemanticModel semanticModel, CancellationToken cancellationToken, out IFieldSymbol field) { field = null; if (property == null) { return(false); } foreach (var declaration in property.Declarations(cancellationToken)) { var propertyDeclaration = declaration as PropertyDeclarationSyntax; if (propertyDeclaration == null) { continue; } IdentifierNameSyntax fieldIdentifier; FieldDeclarationSyntax fieldDeclaration; if (TryGetBackingField(propertyDeclaration, out fieldIdentifier, out fieldDeclaration)) { field = semanticModel.GetSymbolSafe(fieldIdentifier, cancellationToken) as IFieldSymbol; return(field != null); } } return(false); }