// Filters out invocations that are provably safe to ignore, based on proxy attributes/type info private FunctionAnalysis1stPass.Invocation[] FilterInvocations (FunctionAnalysis1stPass.Invocation[] invocations) { return invocations.Where( (invocation) => { if (invocation.Method == null) return true; var secondPass = GetSecondPass(invocation.Method); if (secondPass == null) return true; return (!secondPass.IsPure); } ).ToArray(); }