Passing parameters by reference? Let me fix that for you
Starting from this

var procedures = node.FindAllProcedures().Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; !string.IsNullOrEmpty(parameter.Instruction.Value)));
var targets = procedures.Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; parameter.IsImplicitByRef)
                                        &amp;&amp; !procedure.Instruction.Line.IsMultiline);

return targets.SelectMany(procedure =&gt; procedure.Parameters.Where(parameter =&gt; parameter.IsImplicitByRef)
    .Select(parameter =&gt; new ImplicitByRefParameterInspectionResult(Name, parameter.Instruction, Severity)));


Let's collapse it into one expression

return node.FindAllProcedures()
    .Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; !string.IsNullOrEmpty(parameter.Instruction.Value)))
    .Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; parameter.IsImplicitByRef)
                                        &amp;&amp; !procedure.Instruction.Line.IsMultiline)
    .SelectMany(procedure =&gt; procedure.Parameters.Where(parameter =&gt; parameter.IsImplicitByRef)
    .Select(parameter =&gt; new ImplicitByRefParameterInspectionResult(Name, parameter.Instruction, Severity)));


Move the last Select out of SelectMany

return node.FindAllProcedures()
    .Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; !string.IsNullOrEmpty(parameter.Instruction.Value)))
    .Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; parameter.IsImplicitByRef)
                                        &amp;&amp; !procedure.Instruction.Line.IsMultiline)
    .SelectMany(procedure =&gt; procedure.Parameters)
    .Where(parameter =&gt; parameter.IsImplicitByRef)
    .Select(parameter =&gt; new ImplicitByRefParameterInspectionResult(Name, parameter.Instruction, Severity));


Now it seems like procedure.Parameters.Any(parameter =&gt; parameter.IsImplicitByRef) is redundant, so let's remove that and join the successive Wheres

return node.FindAllProcedures()
    .Where(procedure =&gt; procedure.Parameters.Any(parameter =&gt; !string.IsNullOrEmpty(parameter.Instruction.Value))
                        &amp;&amp; !procedure.Instruction.Line.IsMultiline)
    .SelectMany(procedure =&gt; procedure.Parameters)
    .Where(parameter =&gt; parameter.IsImplicitByRef)
    .Select(parameter =&gt; new ImplicitByRefParameterInspectionResult(Name, parameter.Instruction, Severity));


It's not clear why procedure.Parameters.Any(parameter =&gt; !string.IsNullOrEmpty(parameter.Instruction.Value)) is necessary -- if it is, a comment is required, otherwise we can just write

return node.FindAllProcedures()
    .Where(procedure =&gt; !procedure.Instruction.Line.IsMultiline)
    .SelectMany(procedure =&gt; procedure.Parameters)
    .Where(parameter =&gt; parameter.IsImplicitByRef)
    .Select(parameter =&gt; new ImplicitByRefParameterInspectionResult(Name, parameter.Instruction, Severity));


Which is looking more much manageable. Or if you prefer the alternative syntax

return from procedure in node.FindAllProcedures()
       where !procedure.Instruction.Line.IsMultiline
       from parameter in procedure.Parameters
       where parameter.IsImplicitByRef
       select new ImplicitByRefParameterInspectionResult(Name, parameter.Instruction, Severity);