public static int RightSideOfAssignmentCount(ISymbol variable, BlockSyntax block, SemanticModel semanticModel, CancellationToken cancellationToken) { int count = 0; using (var walker = AssignmentWalker.Borrow(block, Search.TopLevel, semanticModel, cancellationToken)) { foreach (AssignmentExpressionSyntax assignment in walker.Assignments) { var right = semanticModel.GetSymbolSafe(CastUtils.UnWrapCast(assignment.Right), cancellationToken); if (right != null && right.Equals(variable)) { count++; } } } using (var walker = VariableDeclarationWalker.Borrow(block, Search.TopLevel, semanticModel, cancellationToken)) { foreach (VariableDeclaratorSyntax delc in walker.Declarations) { var rightSymbol = semanticModel.GetSymbolSafe(CastUtils.UnWrapCast(delc.Initializer.Value), cancellationToken); if (SymbolComparer.Equals(variable, rightSymbol)) { count++; } } } return(count); }