/// <summary>
    /// This check is entirely to avoid some unnecessary default initializations so the code looks less cluttered and more like the VB did.
    /// The caller should default to outputting an initializer which is always safe for equivalence/correctness.
    /// </summary>
    public static bool IsDefinitelyAssignedBeforeRead(this SemanticModel semanticModel,
                                                      ISymbol locallyDeclaredSymbol, VBSyntax.ModifiedIdentifierSyntax syntaxForSymbol)
    {
        var methodBlockBaseSyntax = syntaxForSymbol.GetAncestor <VBSyntax.MethodBlockBaseSyntax>();
        var methodFlow            = semanticModel.AnalyzeDataFlow(methodBlockBaseSyntax.Statements.First(), methodBlockBaseSyntax.Statements.Last());

        return(DefiniteAssignmentAnalyzer.IsDefinitelyAssignedBeforeRead(locallyDeclaredSymbol, methodFlow));
    }