private static void AddVariableThatWasSkippedBeforeBecauseItLackedAInitializer(Dictionary<IFieldSymbol, VariableDeclaratorSyntax> variablesToMakeReadonly, IFieldSymbol fieldSymbol, SyntaxNode assignment, SemanticModel semanticModel) { var parent = assignment.Parent; while (parent != null) { if (parent is AnonymousFunctionExpressionSyntax) return; if (parent is ConstructorDeclarationSyntax) break; parent = parent.Parent; } if (!fieldSymbol.IsReadOnly && !variablesToMakeReadonly.Keys.Contains(fieldSymbol)) { var containingType = assignment.FirstAncestorOfKind(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration); if (containingType == null) return; var containingTypeSymbol = semanticModel.GetDeclaredSymbol(containingType) as INamedTypeSymbol; if (containingTypeSymbol == null) return; if (!fieldSymbol.ContainingType.Equals(containingTypeSymbol)) return; foreach (var variable in fieldSymbol.DeclaringSyntaxReferences) variablesToMakeReadonly.Add(fieldSymbol, (VariableDeclaratorSyntax)variable.GetSyntax()); } }