// 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();
        }